Decision and Operations 6

Feature flags create controlled variability. Governance is what prevents that variability from becoming permanent confusion.

Classify flags at creation

At minimum, distinguish release, operational, experiment, entitlement and dynamic configuration flags. Their expected lifetimes and permissions are different.

Use naming that communicates intent

A useful name should describe the capability rather than the person or sprint that created it.

good: checkout-address-validation-v2
weak: jacob-test-flag
weak: sprint42-newthing

Teams may also encode domain or service ownership in metadata rather than forcing every fact into the key.

Require ownership and purpose

A flag record should answer:

  • who owns it?
  • what behavior does it control?
  • what type of flag is it?
  • which environments may use it?
  • when should it be reviewed or removed?

Temporary flags need an expiry expectation

A release flag should not quietly become permanent configuration. Teams can assign a target removal date or automatically identify flags that have remained fully rolled out for too long.

Production permissions should match risk

Changing a button color experiment and disabling payment validation do not have the same blast radius. Use roles, approvals and environment permissions that reflect the risk of the controlled behavior.

Emergency controls need a separate rule

An operational kill switch may need to bypass normal waiting periods during an incident. That exception should be explicit, limited to authorized responders, audited, and reviewed afterward.

Auditability is part of debugging

Audit history is not only for compliance. During an incident, engineers need to answer: what flag changed, who changed it, in which environment, and when?

Feature flags are production security controls

A feature flag dashboard can change live application behavior. Access to that dashboard should therefore be governed according to the impact of the action, not merely whether someone belongs to the engineering organization.

Use role based access control around production actions

A practical model may distinguish capabilities such as:

RoleTypical capability
Application developercreate and change development or test flags
Release ownermanage approved production rollout for owned services
Incident responderactivate designated emergency controls
Platform administratormanage environments, integrations, roles and platform policy

These are example responsibilities, not universal job titles. The important idea is least privilege: access should be narrow enough that a person can perform the work they own without automatically gaining authority over unrelated production behavior.

Use separation of duties where the blast radius warrants it

Some production changes should require a second person or a formal approval workflow. A cosmetic experiment may not need that friction. A flag that bypasses fraud checks, changes a regulated workflow, or alters a critical transaction path may justify stronger approval and evidence.

An audit record should reconstruct the change

For sensitive production controls, the organization should be able to answer:

  • who made the change?
  • what was the previous value or rule?
  • what became effective?
  • which environment was affected?
  • when did the change occur?
  • was an approval required and who approved it?
  • was the change later rolled back?

This audit history is useful for incident reconstruction and can also contribute evidence to broader organizational requirements around access control, change management and auditability. Frameworks such as SOC 2 or FedRAMP do not prescribe a particular feature flag architecture; the feature management controls must fit into the organization's overall compliance program.

Evaluation context can leak sensitive data

Targeting becomes powerful because the application passes context about the current user, account, device or request. That context is also a data boundary.

{
  "userId": "84271",
  "region": "US",
  "plan": "enterprise"
}

Those fields may be sufficient to make a targeting decision. Adding email addresses, names, postal addresses or other personal data simply because they are available increases risk without necessarily improving evaluation.

The rule should be straightforward: send only the context the targeting decision actually needs.

Ask where evaluation happens

For every approved SDK pattern, understand:

  • whether evaluation occurs locally or remotely
  • which context fields leave the application boundary
  • whether the feature platform stores those fields or only processes them
  • how long related event or exposure data is retained
  • which administrators or vendor personnel could potentially access it
  • which regions receive or process the data

This is especially important for browser, mobile and experimentation SDKs because exposure events can create a durable record of both the flag variation and the context associated with it.

Do not use feature flags as authorization

RBAC on the feature platform protects who can change a flag. It does not make the flag itself a security boundary for the application.

feature flag → controls experience or rollout

authorization → decides whether the action is allowed

If a flag hides an administrative capability, the backend must still enforce authorization independently.

Make cleanup part of delivery

create release flag
      ↓
ship feature
      ↓
reach 100%
      ↓
remove old implementation
      ↓
remove flag
      ↓
close cleanup work

If cleanup is left to memory, it will lose against new feature work. Put it in the delivery definition of done or create automated stale flag workflows.

Govern the control plane, not every if statement centrally

An enterprise architecture team should define standards and guardrails without becoming the approval bottleneck for ordinary team owned flags. Centralize the rules that protect the enterprise; decentralize routine ownership to the teams closest to the software.


Feature Flags series

← Operating Feature Flags at Scale   Designing an Enterprise Feature Management Architecture →