From dev to production
Flags are definitions, like Logic Blocks: you create and change them in your dev environment, then deploy — they appear in the Deploy page as type featureflag, and are published and activated like everything else, with rollback if you need it.
| In production you can… | Cannot… |
|---|---|
| Read flags; turn a flag on or off (the quick way to stop a feature) | Create, edit or delete a flag — do that in dev and deploy |
| Let a tenant adjust its own flags (tenant changes belong to the tenant) | Copy tenant changes between environments — they never travel with a deploy |
Switching a flag in production changes production directly, so the next deploy shows that flag as changed. That is expected: decide whether dev should match, then deploy.
Limits by plan
| Plan | Flags | Scheduled changes on one flag |
|---|---|---|
| Free | 10 | 5 pending |
| Starter | Unlimited | Unlimited |
| Pro | Unlimited | Unlimited |
Feature flags are included in every plan; paid plans have no limit. Archived flags do not count, and scheduled changes that have already happened never count toward the limit — only changes still to come. A refused change tells you what to upgrade.
Who can do what
| Who | Can |
|---|---|
| Developer, org admin | Manage the organization's flags in dev (console, MCP); turn a flag on/off in production; adjust any tenant's flags from the console. |
| Tenant admin | Manage their own tenant's changes through your admin screen (/tenant/featureflags). |
| Any signed-in user | Read their own flags (evaluate). |
The actions behind these are getfeatureflags, createfeatureflags, updatefeatureflags, deletefeatureflags for the tenant-admin route, and getevaluate for reading — so you can grant or deny them with an ordinary access policy.
Troubleshooting
| Problem | Answer |
|---|---|
| The page says changes must be made in dev | You are on the production tier. Switch to dev to edit; only the on/off switch works in production. |
| My Glyph sees no flags | The Glyph runtimes must be rebuilt once after the feature was added; ask your platform admin. |
{{params.flags.x}} is empty in a Logic Block | The key does not exist, or is archived. Flags are written with the exact key. |
| A tenant says it cannot change a flag | The organization locked it ("Tenants may change this flag" is off). |
| A scheduled change did not happen | Check the time and timezone shown on the change, and that the change is not for a flag the tenant has overridden with its own schedule (that replaces the organization's schedule). |
| Two people edited at once | The second save is refused with a reload message; nothing is overwritten. |