Feature flags exist for one reason that matters here: they let you change what the system does without rebuilding it, which decouples deployment from release. A flag turns a feature on at runtime without modifying source code, so the deploy is not the moment users see the change (LaunchDarkly). That separation is what lets teams merge continuously and still control exposure (the Unleash docs).
Prompts broke that model quietly. When prompt text lived in a Python string or a JSON blob in the repo, an edit was a commit and a deploy, and the deploy pipeline was the gate. Once prompts moved into a registry or dashboard so non-engineers could iterate, the edit stopped being a deploy. It became a direct write to production behavior with no build, no test stage, and no artifact to inspect.
The failure mode is easy to picture. A support lead tweaks one instruction in a summarization prompt to fix an edge case. The change reaches 100 percent of traffic immediately because aliases like production point at whatever was last promoted. Nothing in the deploy history changed, so the on-call engineer looking at the incident timeline sees no deploy to correlate against. The rollback has to be reconstructed from memory.
The working rule: any change that can move user-facing output is a release. Code, prompt text, temperature, system instructions, tool definitions, and model selection all qualify (a prompt-versioning guide). The rest of this article is how to put a gate in front of that release without slowing the people making prompt edits to a crawl.



