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 feature flag 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?

Feature flags 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 feature flag.

Anatomy

Lifecycle

  1. Create. shipeasy killswitch create transactional.email-sender --description "Disables outbound email" --value false (killswitch names must be folder.name; --value false means "not killed by default").
  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 update transactional.email-sender --value true
  4. Recover. Once the incident is closed, flip it back and post-mortem the audit log.

Killswitch vs feature flag vs config

QuestionKillswitchFeature flagConfig
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

  • Feature flags — 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
Was this page helpful?
✎ Edit this page

On this page