
Feature flags are one of the most useful tools in modern software delivery. Teams use them to:
safely deploy code
roll out features gradually
run experiments and A/B tests
turn functionality on or off without redeploying
Because feature flags are fast, flexible, and already present in many codebases, teams often reach for them to solve pricing and access problems too.
At first, this feels clever.
Over time, it becomes one of the biggest sources of hidden technical and operational debt in SaaS products.
This article explains:
why feature flags seem like a good entitlement solution
where that approach breaks down
the concrete problems it creates at scale
and what feature flags should (and should not) be responsible for
Why feature flags are so tempting
Early-stage SaaS products tend to use feature flags for everything.
They’re appealing because they are:
simple booleans
fast to evaluate
easy to change
already wired into the product
The logic often starts small:
Then pricing arrives.
Someone suggests:
“Why don’t we just turn this flag on for Pro customers?”
And for a while, it works.
The slow slide from rollout tool to access control system
As pricing evolves, flags begin to encode business rules:
enable_ai_exportenable_team_collaborationenable_advanced_analytics
Soon, flags are no longer temporary.
They become:
permanently enabled for some customers
disabled for others
overridden for sales deals
toggled manually by support
At this point, feature flags are no longer controlling code rollout — they are controlling customer entitlements.
That’s where the problems start.
Problem 1: Feature flags don’t model limits or usage
Feature flags are binary.
Entitlements are rarely binary.
Real SaaS access rules include:
seat limits
usage quotas
rate limits
per-feature caps
graduated access levels
Trying to encode this with flags leads to inventions like:
max_projects_5max_projects_10max_projects_unlimited
At that point, the flag system is no longer a flag system — it’s a poorly structured entitlement store.
Problem 2: Flags don’t explain why access exists
When a support ticket comes in asking:
“Why does this customer have access to Feature X?”
A flag-based system often can’t answer.
You might see:
a flag enabled
but not when it was enabled
not why it was enabled
not what it’s tied to
Was it:
a plan?
a trial?
a sales exception?
a bug?
Without an entitlement layer, access becomes historically opaque.
Problem 3: Flags leak across concerns
Feature flags are frequently:
global or environment-scoped
user-scoped for experiments
Entitlements are:
account-scoped
product-scoped
long-lived
Mixing these causes subtle bugs:
team members enabling flags for the wrong scope
experiments affecting paid access
internal toggles leaking into production logic
The result is unpredictable behavior that’s hard to reproduce.
Problem 4: Flags don’t age well
Feature flags are meant to be:
added
used
removed
Entitlements are meant to persist.
When flags become entitlements:
they never get cleaned up
nobody knows if they’re safe to remove
renaming them breaks access
The flag system becomes cluttered with legacy logic that no one fully understands.
Problem 5: Pricing changes become dangerous
Because access is controlled by scattered flags:
pricing changes require manual flag audits
upgrades and downgrades are brittle
new plans require new flag combinations
Teams become hesitant to touch pricing at all.
Ironically, the tool chosen for flexibility ends up freezing iteration.
What feature flags are actually good at
Feature flags are excellent — when used for their intended purpose:
staged rollouts
kill switches
experiments
developer workflows
They answer the question:
“Is this code path active?”
They do not answer:
“Is this customer entitled to use this capability?”
The right relationship between feature flags and entitlements
In a mature SaaS system:
feature flags control code availability
entitlements control customer access
The two layers can work together:
Flags decide if a feature exists.
Entitlements decide who can use it.
Each stays simple.
Final takeaway
Using feature flags as an entitlement system feels efficient — until it isn’t.
What starts as a shortcut slowly turns into:
opaque access rules
fragile pricing logic
operational pain
Feature flags are a delivery tool.
Entitlements are a business system.
When you let each do its job, both become easier to manage.