Skip to content

Tools overview

What tools are

deepcode's main loop gets work done through a set of built-in tools: reading and writing files, searching code, running commands, spawning subagents/skills, reaching the web and long-term memory, and managing background and scheduled tasks. Every tool call is shown live in the TUI, and whether it needs your confirmation is decided by the current permission mode.

Grouped by category

The tables below group the built-in tools by purpose (names taken straight from source, matching what's actually registered). The "read-only" column reflects the tool's isReadOnly property, which determines whether the permission system auto-approves it — see the next section for the full decision rule.

Files & notebook

ToolWhat it doesRead-only
ReadReads file content with line numbers; must be called before editing any file
WriteWrites a whole file (create or overwrite); overwriting an existing file requires a prior Read
EditExact string replacement in a file
NotebookEditEdits a single Jupyter notebook (.ipynb) cell: replace/insert/delete, without executing it
ToolWhat it doesRead-only
GlobFinds file paths by glob pattern (auto-ignores node_modules/.git)
GrepSearches file content by regex, returns file:line:content

Execution

ToolWhat it doesRead-only
BashRuns a shell command in a persistent working directory, foreground or backgrounded

Agent orchestration

ToolWhat it doesRead-only
AgentSpawns a one-shot subagent to complete a subtask; the subagent doesn't see the current conversation
WorkflowOrchestrates multiple subagents with deterministic JavaScript (loops/conditionals/fan-out)
SkillInvokes a skill; the skill's instructions are delivered as a separate message and executed
TaskCreateCreates a task in the task list
TaskGetGets all fields of a task by id
TaskUpdateUpdates a task's status/fields (including dependency-blocking checks)
TaskListLists the current task list
BgTaskListLists all background process tasks
TaskOutputReads background task output (incremental, or from a given offset)
TaskStopStops a running background task by id

Memory

ToolWhat it doesRead-only
SearchMemoryFull-text searches long-term memory (this project + the cross-project global drawer) for relevant snippets

Network

ToolWhat it doesRead-only
WebFetchFetches an http(s) URL and extracts/summarizes its content per a prompt
WebSearchSearches the web for current information, returns title/link/snippet

Scheduling & notifications

ToolWhat it doesRead-only
SleepWaits a given number of seconds; the user can interrupt at any time
ScheduleWakeupSchedules the next resume in /loop dynamic mode
CronCreateSchedules a future task, recurring on a cron schedule or one-off
CronListLists the cron tasks scheduled in this session
CronDeleteCancels a scheduled cron task
MonitorStarts background monitoring, streaming events from a long-running script
PushNotificationSends a desktop notification to the user's terminal

Interaction & flow control

ToolWhat it doesRead-only
AskUserQuestionPops a structured multiple-choice question to the user (interactive mode only)
ExitPlanModeIn plan mode, asks the user to approve a plan; once approved, lifts the read-only restriction

Worktree isolation

ToolWhat it doesRead-only
EnterWorktreeCreates an isolated git worktree and switches the current session into it
ExitWorktreeExits the current worktree session, restoring the original working directory

Config

ToolWhat it doesRead-only
ConfigReads/writes user-level config (sensitive fields like apiKey/hooks/mcpServers can't be changed through this tool)

External tools (MCP)

Connected MCP servers hot-plug their own tools into this tool set dynamically — they're not in the fixed list above, and their names are defined by the server itself. See MCP.

How a tool shows up in the TUI

A call sequence lists "tool name + a one-line summary" live, then a cost line at the end:

› add unit tests for utils and make them pass

  Grep  search for utils-related files
  Read  src/utils.ts
  Edit  src/utils.test.ts
  Bash  npm test

  Added unit tests for the 4 functions in utils.ts, npm test passes (12 passed).

  ¥0.03 · 3 turns · 8.2k tokens

Permission classes

Tools with isReadOnly true are auto-approved by default, with no confirmation prompt; tools that write files or run commands need your confirmation by default (unless the permission mode or a rule says otherwise). The full decision priority — deny rules > plan-mode read-only > system-level safety backstop > read-only shortcut > allow/ask rules — is covered in permission modes; it isn't repeated here.

Full parameter reference

Per-tool parameters and input schemas live in tools reference.


Next: MCP (connecting external tools), permission modes.