How do you efficiently steer AI coding agents?
The way you steer a coding agent shapes where it looks, which constraints it treats as important, and how much work it spends rediscovering a repository. Useful agent guidance still has a hard limit: it can influence behavior without proving that the required behavior even occurred. Let’s dive more into this problem.
More instructions =/= better agent steering
Agent guidance is becoming part of more coding-agent repo configurations. A 2026 exploratory study, Harness Engineering for Agentic AI Coding Tools, identified 8 configuration mechanisms across 2,853 GitHub repositories. Context files dominated adoption, while agent skills relied predominantly on static instructions rather than executable scripts. Engineering teams clearly see persistent context as useful, but we’re still working out where persistent context should end.
A paired study, On the Impact of AGENTS.md Files on the Efficiency of AI Coding Agents, associated a root AGENTS.md with a 28.64% reduction in median runtime and a 16.58% reduction in median output tokens across 10 repositories and 124 pull requests.
Those numbers measure operational efficiency. However, it didn’t evaluate semantic correctness or functional equivalence, so it can’t tell us whether or not the resulting code was technically better.
Other evidence complicates this. Evaluating AGENTS.md found that repo context files failed to generally improve task success and increased inference cost by more than 20% on average. Probe-and-Refine Tuning of Repository Guidance reported a 33.0% mean resolve rate for refined guidance, compared with 28.3% for a static knowledge base and 25.5% without context. The improvement came from producing evaluable patches for more tasks, as opposed to higher precision among completed patches. Guidance tuned for one model also degraded another model’s agent loop.
The research shows we don’t have a universal recipe that solves coding agent efficiency, optimal repo agent guidance configurations, and coding agent adherence to desired outcomes simultaneously.
It instead proves a design constraint: the presence of instructions is a weak proxy for effective steering. Relevance, structure, agent behavior, model fit, and the surrounding harness are all key elements in the equation.
OpenAI’s harness-engineering report offers a useful practitioner pattern. Its team replaced a monolithic AGENTS.md with a short map to deeper repository knowledge, mechanically checked that knowledge, and moved repeatedly violated rules into linters and structural tests. That’s pretty useful evidence from one heavily engineered environment.
All of these findings considered, I wrote this article to explain where I think each engineering expectation should live and which mechanism can prove they’re satisfied, respectively.
Define “efficient coding agent steering”
I think of efficient steering as giving an agent enough relevant context to make a good decision.
- Reduce unnecessary rediscovery of structures and conventions.
- Route relevant expectations to the point where the agent needs them.
- Turn bounded conditions into checks that can actually run.
- Keep review, lifecycle advancement, and accountable approval visible.
Fewer tokens or faster completion may be useful outcomes in a specific evaluation, but they don’t make up the full equation here. A faster agent that follows outdated guidance, skips tests, or writes tests that cheat through problem solving is not operating efficiently in any durable engineering sense.
Set engineering expectations for several responsibilities
My agent workflow separates five responsibility layers:
- Agent guidance carries intent, context, tradeoffs, and recovery advice.
- Executable checks evaluate bounded conditions.
- Independent review challenges assumptions and missing cases.
- Lifecycle systems determine whether evidence remains current and whether the workflow may advance.
- Accountable humans authorize adoption, exceptions, and consequential decisions.
The same expectation can appear in more than one layer for different reasons.

Learnings from building Software Standards Bootstrap
I’m working directly on this problem in Software Standards Bootstrap. SSB is an offline workflow that turns context from a pinned repository snapshot into agent rules, command recipes, agent skills, and automation scripts. They’re all proposed to the developer for review and, if accepted, are added into your repo via an ADR (architectural decision record).
I built this because I noticed that new customers and prospects being introduced to Qodo were excited about agentic development, but hadn’t yet adopted any of the latest agentic AI standards. Agent skills, rules, and agents.md, for example, get repos ready to leverage agent-native developer tools like Claude Code, Codex, and even Qodo itself.
When a greenfield team is starting the AI adoption process, where would they really begin? What would be the first recommended rules and agent skills? Since every team and repo may have different tech stacks, workflows, and expectations, pulling down generic skills from the public might not be as useful for steering their AI coding agents and other tools to align with their needs.
So that’s why I built Software Standards Bootstrap. Now let’s dive into a couple things I learned from working on this.
Provenance improves agent steering
Generating a repository-specific AGENTS.md from a project’s existing engineering conventions appears to solve some aspects of the steering problem. And it bounded agent guidance to repository evidence with routed expectations by scope. I call this “provenance-rich”.
But the managed file still had to represent very different things: context that helps an agent reason, semantic expectations, commands that need to run, multi-step procedures, verification checks, and software standards that developers should consider adopting.
In my initial iterations of SSB, too many boundaries were implicit in the code, as opposed to being surfaced, codified, and routed from within AGENTS.md.
Issue #27 and PR #32 changed the output contract. Repository orientation became separate from active standards. Verification commands became visible. Unadopted benchmark output moved to AGENTS.proposed.md, and automation proposals were kept separate from active guidance.
Where does an engineering standard belong in your repo?
I use five questions to classify an engineering expectation:
- Does compliance require interpretation? Put the intent, tradeoffs, examples, and recovery guidance in natural language.
- Can part of the expectation be evaluated as true or false? Encode that part in a schema, test, policy gate, CI check, or runtime control.
- Does the evidence depend on the exact repository revision or artifact? Bind it to the commit, configuration, policy version, and relevant digests.
- Could a retry, new commit, or environmental change invalidate it? Define the invalidation condition and require re-verification.
- Does the action require accountable authority? Keep approval, exception acceptance, merge, release, and publication with the designated owner.
The Django test I ran is a practical example. Its generated proposal includes a semantic rule to cover behavior changes with regression tests, a verification recipe that records ./runtests.py from the tests directory, and an agent skill for deprecating a Django feature. The file is named AGENTS.proposed.md because the benchmark is a proposal. It would need developer approval to become official.
The responsibility split looks like this:
| Agent guidance | Must be executed | Code review or human authority |
| Explain repository purpose, important areas, tradeoffs, and handoff context. | Validate that the context has exact evidence in the pinned snapshot. | Reviewers decide whether the context is complete and useful. |
| State that behavior changes require regression coverage and explain why. | Run the applicable test suite against the current revision. | Reviewers judge whether the tests cover the meaningful behavior. |
| Record the exact verification command, working directory, and expected result. | Execute the command and bind its result to the applicable revision. | Lifecycle systems decide whether the evidence is current enough to advance. |
| Describe a multi-step deprecation workflow and its tradeoffs. | Run compatibility, test, and documentation checks. | Humans approve the compatibility decision and eventual removal. |
| Record a missing deterministic control as an automation proposal. | Implement and run the control before claiming enforcement. | Humans prioritize, adopt, or reject the proposal and own exceptions. |
| Explain that generated standards remain a proposal. | Validate schemas, evidence, digests, and deterministic rendering. | Developers review and merge; file presence alone is not adoption. |
Deterministic processes in Software Standards Bootstrap
SSB requires codebase evidence in your repo to generate agent guidance docs and verification scripts.
- The repository inventory is complete and tied to a pinned snapshot.
- Evidence references, schemas, relationships, and paths satisfy the encoded contracts.
- Source and generated software standards proposal digests match.
- The generated projection is deterministic and changed inputs fail validation.
SSB deliberately does not run the target repository’s test, lint, build, or documentation commands during generation.
Here’s what the entire workflow looks like underneath the hood:

Improve your own coding agent guidance
Take five expectations from one AGENTS.md file, repository rule set, prompt, skill, or runbook. For each expectation:
- Classify what belongs in guidance and what requires interpretation.
- Name the executable check, if a bounded condition exists.
- Record your decisions in commits, artifacts, configurations, policy as code, or manual developer action.
- Name who or what owns review, lifecycle advancement, approval, and exceptions.
Once those boundaries are explicit, you can pursue faster and more focused agent workflows, backed by your own code.