Agent tools
What the agent can do
The tools that ship in the kernel, and why the list is shorter than you might expect.
A tool is a single capability the agent can invoke — read a file, run a command, search the web. The kernel ships a deliberately small set. Everything else is something you install or the agent writes.
Files
read_file, write_file, edit_file, list_dir, glob, grep,
diff_review, undo, read_tool_result
read_tool_result is not one you will ask for directly: when compaction rewrites
an old tool result into a short stub, the full body is kept, and this is how the
agent pulls it back instead of re-running the command.
Shell
shell, and bg_list, bg_logs, bg_wait, bg_kill for processes it started
in the background.
Background shell processes are tracked by process id, with stdout and stderr
merged into one log file. The merge is deliberate — interleaving is usually what
you want to read — so bg_logs returns both streams together.
Every command goes through the shell policy before it runs; see What it can do without asking.
Git — read-only
git_status, git_diff, git_log
There is no git_commit, git_push or git_checkout tool. That is not an
oversight: commits and branch changes go through shell, where the shell policy
and the approval flow can see them. A dedicated tool would be a second path
around a gate that already exists.
Web and documents
http_request, scrape, web_search, read_pdf, vision
vision handles images — screenshots, diagrams, charts.
Voice
voice_transcribe, voice_synthesize
Both route through the platform. There is no local Whisper or say path.
Agent-level
delegate, task_manage, monitor
delegate hands a sub-task to another agent instance. monitor creates a
recurring check that reports each cycle inline — see the /monitor command in
Slash commands.
Syntax checking
rust, python, typescript, javascript, go, java, kotlin, c,
cpp, php, ruby, lua, sql, json, yaml, toml
One per language, checking syntax only. These are what --verify uses after a
turn to confirm the agent did not leave a file unparseable.
Not in the default build
browser — Chromium automation — is behind a build feature, because it drags a
large dependency tree that most users never execute.
Why the list is short
Earlier versions shipped tools for Docker, databases, LSP, test runners, package management, services and scheduling. They were removed in the v0.9.9 slim-kernel cleanup.
The reasoning: every always-present tool costs context in every session, whether or not your project has anything to do with it. A Rust project pays for the database tool it will never call. The replacement is the SPEC registry — install the tools your work actually needs, and let the agent write the ones nobody has written yet. See Extending the agent.
If you have read an older README promising forty tools, this is what happened to them.
Seeing the real list
The authority is your own machine, not this page:
> /tools
That lists what is registered right now, including anything installed from the registry and anything the agent has written for itself.