Tool Overview

Each tool gets a purpose-built widget: diffs render as diffs, search results group by file with line numbers, bash shows exit codes, todos become checklists.

ToolEffect classDescription
readReadRead a file (or a line range). Large files return a symbol outline first.
writeWriteCreate a new file with atomic write semantics.
editWriteApply targeted text substitutions to an existing file; renders a diff.
bashShellRun a shell command inside the sandbox; shows exit code + output.
grepReadRegex search across files, grouped by file with line numbers.
globReadFind files by glob pattern.
list_dirReadList a directory with type, size, and name.
find_definitionReadLocate a symbol definition across the codebase.
web_fetchNetworkFetch a URL (capped output) for docs and APIs.
web_searchNetworkSearch the web and return result snippets.
todoPureMaintain a session todo / plan list, rendered as a checklist.
diagnosticsShellRun the project's build/lint and surface errors and warnings.
git_statusReadShow branch, staged/unstaged changes, untracked files.
git_diffReadShow a diff (unstaged, staged, or a ref range).
git_logReadShow commit history.
git_commitWriteStage files and create a commit.
remember / forgetPurePersist or remove durable facts across sessions.

NoteThe effect class determines which permission profile auto-runs the tool. Pure and Read tools run automatically in every profile; Write, Shell, and Network are gated by your profile.

Compile-time enforcement

Each tool's effect set is declared at compile time and checked against the permission matrix via static_assert. A tool can't accidentally gain a side effect that the policy doesn't account for — the build catches it.