Tools for Coding Agents — How an Agent Acts on Code

An agent's reasoning is useless without the ability to act, and for a coding agent, acting means tools: editing files, running commands, executing tests, searching code, using version control. The tools define what the agent can do, and their design — what they expose, how safe they are, how reliable their feedback — shapes how well the agent works. This post is about the tools that turn a reasoning model into an agent that changes real software.

Post 2’s loop has an “act” step; post 3’s grounding has a “search” step — both happen through tools. This post covers the coding agent’s toolset: the capabilities that let it operate in a real development environment. Tool design is where a coding agent’s power and its safety are both determined.

The core toolset

A coding agent acts through a set of tools that map onto what a developer does at a workstation. The essential ones:

These tools together give the agent a workstation: observe (read/search), act (edit/run), verify (test), and manage (version control) — the full loop (post 2) made executable. The agent’s capabilities are exactly its tools: what it can do is what its tools let it do, so the toolset defines the agent’s reach.

Tool design shapes the agent

How these tools are designed strongly shapes how well the agent performs — tool design is agent design:

The principle: the agent is only as capable as its tools are reliable and its tool feedback is clear. A huge amount of coding-agent quality comes from well-designed tools — reliable edits, informative test output, precise search — more than from the model alone. This is why building a good coding agent is substantially a tool-engineering problem, not just a prompting one.

Safety: tools that can do anything must be bounded

Here is the critical concern: coding-agent tools — especially the shell — can do real, consequential, sometimes irreversible things (delete files, push code, run arbitrary commands, modify systems), so tool safety is a first-class design problem, connecting directly to the agent-governance and bounded-execution ideas the blog covers:

The through-line: a coding agent acts through tools — read/edit files, run commands, run tests, search, version control — which define its capabilities and make the loop (post 2) executable, and whose design (reliability, clear feedback, granularity, composability) largely determines the agent’s quality (building a good coding agent is substantially a tool-engineering problem). Because those tools — especially the shell — can do consequential, irreversible things, safety is first-class: least-privilege scoping, sandboxing/isolation, confirmation gates for high-impact actions, reversibility via version control (git as the undo button — a key reason coding agents are relatively safe), and human visibility/review. The tools are where the agent’s power and its danger both live, so designing them well — capable, reliable, clear, and bounded — is where much of coding-agent engineering happens.

Key takeaways

Further reading

Sources & References