2026-09-07
The Agent Toolbox Is a Build Input
Give a coding agent a clean machine and it will start making choices before it starts making software. Those choices are part of the build, whether you govern them or not.
Installation is a decision
A coding agent rarely begins with only the repository. It reaches for search utilities, formatters, package managers, browsers, test runners, and whatever else makes the next step easier. That behavior is useful. A capable worker should know how to equip itself. But every tool it adds changes the environment that produces the result.
The choice can affect what the agent finds, how it interprets a file, which command succeeds, and whether another machine can reproduce the work. A tool version can change output. A global install can hide a missing project dependency. A convenient utility can require authority the task never needed. What looks like setup is already execution.
This matters more as agent volume rises. One developer improvising a command may leave a small mystery for the next person. Hundreds of agent runs improvising their own toolchains create a moving production surface. The code can be identical while the path that created and checked it quietly changes underneath you.
Preference is not policy
Agents do not choose tools because your organization approved an operating standard. They choose what appears available, familiar, fast, or likely to complete the current task. That is a reasonable local strategy. It is not a factory policy.
A popular choice is not automatically the right one for your repository. The tool may be unpinned, incompatible with the build image, redundant with an existing command, or impossible to audit later. Another agent may make a different choice from the same starting point. Both can finish successfully and still leave you with two workflows that disagree about how the work is done.
The wrong response is to write a longer prompt naming every preferred utility. Prompts describe intent; they do not make an environment repeatable. If a tool matters, put it in the project, pin it, expose it through a stable command, and test that command in the same conditions the factory will use. Turn preference into machinery.
Govern the capability, not the brand
A factory should care first about the capability a tool provides. Can the agent search the repository without wandering into secrets? Can it inspect structured data without corrupting it? Can it run a browser against the right boundary? Can it prove formatting, types, and tests with commands that return an unambiguous verdict? Those are operating requirements.
Once the requirement is clear, the factory can provide an approved route. Some tools belong in the repository. Some belong in a locked execution image. Some should be temporary and isolated to one task. Others should never be installable because their permissions or network behavior exceed the work. The policy should decide before the agent encounters the temptation.
This keeps the model replaceable. If your workflow depends on one agent remembering one utility by name, you have encoded the process in model behavior. If the repository exposes a capability through a stable interface, different agents can use it and the evidence stays comparable. The model can change without changing what done means.
Let agents equip themselves inside a fence
Banning installation entirely throws away useful autonomy. Agents will encounter legitimate gaps, especially in unfamiliar repositories and diagnostic work. The better design is bounded self-equipment: a controlled catalog, exact versions, narrow permissions, recorded installation events, and a clean environment that can be rebuilt from nothing.
The record matters because a successful run should teach the factory. If agents repeatedly install the same utility, that is evidence the base environment or repository interface is missing a capability. Promote the tool deliberately or provide an equivalent command. If an installation never contributes to accepted work, stop paying for the detour. The toolbox should evolve from outcomes, not habit.
Reproduction closes the loop. Run the relevant proof in a fresh environment built from the declared configuration, not the agent's warmed-up workspace. If the work fails without an undeclared global tool, the build was never complete. The clean run turns a hidden dependency into a visible rejection while it is still cheap to fix.
The toolbox has to outlive the worker
Our position is that repeatable software delivery will move away from people and into agent-run factories. That shift only works when the operating knowledge survives each worker. Tool selection is part of that knowledge. Leaving it inside a session means paying to rediscover the same route and accepting a different answer every time.
Human judgment still decides which capabilities are allowed, which risks are acceptable, and what evidence earns release. People should not spend their days approving the same harmless installer or repairing another invisible dependency. They should set the boundary once, inspect exceptions, and improve the environment when repeated behavior exposes a gap.
Watch what your agents install. Not because every choice is suspicious, but because every repeated choice is telling you something about the factory. Capture the useful ones, reject the dangerous ones, and make the whole route reproducible. The agent may be temporary. Its toolbox cannot be.
In response to Which tools do Claude, Codex and Cursor choose? We measured 17k runs to find out by Armature.