ShipEasy
Flags & ExperimentsKillswitches

Killswitches

A flag with a single job — disable a system instantly during an incident.

Production readyOn this page · 4 min readUpdated · May 10, 2026Works with · Server SDK · Browser SDK

A killswitch is a boolean flag with one purpose: be the lever you pull when something is on fire. It looks like a gate but lives in its own list, has no rollout percentage, and defaults to the safe position so on-call doesn't have to think.

Why a separate primitive?

Gates have targeting rules, ramps, and dozens of them per project. Killswitches have one switch and a name. Mixing them is dangerous — at 3am you do not want to fat-finger a --rollout 100 instead of --off.

Rule of thumb

If a junior on-call engineer needs to flip this in five seconds without reading the docs, it's a killswitch. Not a gate.

Anatomy

Lifecycle

  1. Create. shipeasy killswitch create email-sender --description "Disables outbound email"
  2. Wire it in. Wrap the call in your code:
    if (!(await gate("email-sender"))) return; // killed
    await sendEmail(payload);
  3. Page-time. Flip it instantly:
    shipeasy killswitch off email-sender --reason "PagerDuty #4912"
  4. Recover. Once the incident is closed, flip it back and post-mortem the audit log.

Killswitch vs gate vs config

QuestionKillswitchGateConfig
Outputbooleanbooleantyped value (string/number/json/bool)
Targeting rules?noyesyes (per-env)
Rollout percentage?noyesn/a
Default if unreachable?configurable, usually truefalselast-known-good
Use casebreak-glass during incidentprogressive rolloutnon-boolean values

See also

  • Gates — the everyday rollout primitive
  • Decision tree — pick the right primitive for the change you're shipping
  • API referencePOST /api/admin/killswitches etc.
  • CLIshipeasy killswitch … commands

On this page