Skip to main content
Browse the documentation

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.