Tools
The tools Hull uses to read, edit, run and search, and how permissions control them.
Hull gets work done through tools: small, specific actions such as reading a file, editing it, running a command or searching the web. You describe the outcome, and Hull decides which tools to call, in what order, and shows each call in the session as it happens.
How a tool call works
- Hull picks a tool and its inputs based on your request and what it has learned so far.
- Hull checks your permissions. The call runs, waits for your approval, or is blocked.
- The result goes back to Hull, which decides what to do next.
- This repeats until the task is done or Hull needs your input.
Built-in tools
Read and search
| Tool | What it does |
|---|---|
read | Reads a file, with line numbers. |
glob | Finds files by pattern, such as src/**/*.test.ts. |
grep | Searches file contents with a regular expression. |
semantic_search | Finds code by meaning. Available when codebase indexing is on. |
Edit
| Tool | What it does |
|---|---|
edit | Replaces exact text in a file. |
write | Creates a file or overwrites one. |
apply_patch | Applies a patch. Used instead of edit with models that work better with patches. |
Run
| Tool | What it does |
|---|---|
bash | Runs a shell command in your project. On Windows it can use PowerShell or cmd, but the tool and its permission are still called bash. |
background_process | Starts and manages long-running processes such as dev servers and watchers, so they don't block the session. |
interactive_terminal | Runs a command that needs your input in a terminal you can type into. CLI and Desktop. |
Web
| Tool | What it does |
|---|---|
webfetch | Fetches a URL and returns its content. |
websearch | Searches the web. Available when you use models through Hull Gateway. |
Workflow
| Tool | What it does |
|---|---|
task | Hands work to a subagent that runs in its own session and reports back. |
todowrite | Creates and updates the session's task list. |
question | Asks you a question with suggested answers. |
skill | Loads a skill. |
plan_exit | Ends planning in the Plan agent and asks whether to start building. |
suggest | Suggests reviewing the changes once implementation is done. CLI and VS Code. |
Memory
| Tool | What it does |
|---|---|
hull_local_recall | Searches past conversations from this project on your machine, including its worktrees. |
hull_memory_recall, hull_memory_save | Read and save notes in the project's memory. |
VS Code only
| Tool | What it does |
|---|---|
agent_manager | Starts and coordinates Agent Manager sessions. |
browser_open | Opens your local app in the Agent Manager's browser panel. See Browser use. |
MCP tools
Tools from connected MCP servers appear alongside the built-in ones, named <server>_<tool>.
Which tools an agent sees depends on the agent. Ask and Plan can't edit files, and Ask can't start subagents. See Agents.
Permissions
Every tool call is checked against your permission rules. Each rule resolves to allow (run it), ask (wait for your approval) or deny (block it).
With the default rules for the Code agent:
| Tool | Default |
|---|---|
Most tools, including read, edit, write, webfetch and task | allow |
bash | ask, except a list of read-only commands such as cat, ls and pwd, which are allowed |
Reading .env files | ask (.env.example is allowed) |
Files outside your project (external_directory) | ask |
hull_local_recall, hull_memory_recall, hull_memory_save | ask |
The same call repeated in a loop (doom_loop) | ask |
How Hull asks depends on the app's permission setting. In Desktop, for example, you can have Hull ask before edits and commands, approve on your behalf, or act without asking. See Your first session and Auto-approve.
When Hull asks, you can approve once, always allow matching calls, or decline.
Set rules in hull.jsonc:
{
"permission": {
"edit": "ask",
"bash": {
"*": "ask",
"npm test": "allow",
"git push *": "deny"
},
"webfetch": "allow"
}
}See Permissions for patterns, file paths and per-agent rules.