Skip to content

Tools

Agents work through a set of built-in tools that run in the working directory (/cd to move it). Read-only tools need no permission and work in plan mode; mutating tools go through the permission gate.

Built-in tools

ToolWhat it doesPrompts?
bashrun shell commandsyes (mode-dependent)
read_fileread a fileno, with narrow exceptions
write_filecreate or overwrite a fileyes
edit_filetargeted edits to a fileyes
grepregex search (ripgrep when installed)no, with narrow exceptions
globfile matching (**/*.go, newest first)no, with narrow exceptions
web_searchkeyless search (DuckDuckGo)no
web_fetchfetch readable page textfirst contact per host
todo_writemaintain a todo listno
spawn_agentdelegate a task to a subagentsubagent's calls prompt normally

The read-only exceptions exist because read tools compose into exfiltration — details in Sandboxing & Security.

Todo list

On multi-step work the agent keeps a todo list via todo_write, shown live in the plan panel and saved with the session.

Background commands

bash takes background: true for a dev server or a long build; bash_output collects what it has produced since last asked and bash_kill stops it. Polling never re-prompts, and jobs are killed when Tapioca exits.

Foreground bash calls are bounded by bash_timeout (default 180 seconds); a call can ask for more, up to 30 minutes, via its timeout argument.

External edits are respected

If you change a file in your own editor after the agent read it, write_file/edit_file refuse to overwrite it until the agent re-reads, and the next prompt carries a note listing what changed.

LSP diagnostics

Configure language servers under [[lsp]] and every file the agent writes is checked; errors come back attached to the tool result (4:2 error: undefined: doesNotExist), so the agent fixes them in the same turn rather than after a build. See MCP & LSP.

MCP tools

Tools from configured MCP servers are namespaced server__tool and offered alongside the built-ins. They prompt like built-in tools. See MCP & LSP.

Custom commands

Drop a markdown file in ~/.config/tapioca/commands/ or .tapioca/commands/ in a project and its name becomes a slash command. The first # heading is its description and $ARGUMENTS takes whatever you type after it. Project commands override personal ones.

Released under the MIT License.