The fence idea matches my experience, with one failure mode worth adding: a fence that is inert without anyone noticing. I had a block list that was empty in one environment, and an empty list looks exactly like "nothing to block". Same with a setting that did nothing for months because no test would fail if its value changed. What fixed it was resolving the list per environment and failing loudly when the reference doesn't exist, plus a test that breaks if the setting changes. A fence nobody exercises is decoration.
Agree on the coding part, with one catch. A fence the agent can't see is just a wall it keeps hitting. The guardrails that actually sped me up were written down where the agent reads them, plus a check that fails loudly when it crosses one. How do you keep the written rules and the enforced ones from drifting apart?
The fence only works if it's enforced outside the agent. A rule in the prompt or in AGENTS.md is advice the model can drift from on a long task, while a branch protection rule or a deny list in the tool permissions holds no matter what it decides. Teams loosen up on what they let agents ship once the important rules move into the second group.
Great way to explain guardrails. At my current company we're building feature environments for this exact purpose, so agents can work without touching production. When something goes wrong, you know it's a setup problem and not a model problem.
The fence idea matches my experience, with one failure mode worth adding: a fence that is inert without anyone noticing. I had a block list that was empty in one environment, and an empty list looks exactly like "nothing to block". Same with a setting that did nothing for months because no test would fail if its value changed. What fixed it was resolving the list per environment and failing loudly when the reference doesn't exist, plus a test that breaks if the setting changes. A fence nobody exercises is decoration.
Agree on the coding part, with one catch. A fence the agent can't see is just a wall it keeps hitting. The guardrails that actually sped me up were written down where the agent reads them, plus a check that fails loudly when it crosses one. How do you keep the written rules and the enforced ones from drifting apart?
The fence only works if it's enforced outside the agent. A rule in the prompt or in AGENTS.md is advice the model can drift from on a long task, while a branch protection rule or a deny list in the tool permissions holds no matter what it decides. Teams loosen up on what they let agents ship once the important rules move into the second group.
Great way to explain guardrails. At my current company we're building feature environments for this exact purpose, so agents can work without touching production. When something goes wrong, you know it's a setup problem and not a model problem.