Skip to main content
When you run an agent, it uses tools to actually do things — read a file, run a shell command, write output. You control exactly which tools are available.
For example, a code reviewer only needs read and cli. A file generator needs write. You can allowlist or denylist per query.

Built-in Tools

ToolDescriptionConcurrentRead-only
cliExecute shell commandsnot concurrentnot read-only
readRead file contents with paginationconcurrent saferead-only
writeCreate/write files (auto-creates dirs)not concurrentnot read-only
editEdit existing file contents (find and replace)not concurrentnot read-only
memoryLoad/save git-committed memory (auto-archives)not concurrentnot read-only
capture_photoCapture camera frame as photonot concurrentnot read-only
task_trackerTrack task progress, search skillsnot concurrentnot read-only
skill_learnerSave/evaluate learned skills with confidencenot concurrentnot read-only

Tool Details

  • cli — Runs shell commands. Timeout is 120s by default (configurable). Output is capped at ~100 KB (stdout + stderr combined).
  • read — Reads file contents. Encoding utf-8 (binary files return a placeholder message). Use offset and limit for large files (offset = start line, limit = number of lines) — it won’t load the whole thing at once.
  • write — Creates or overwrites files. Parent directories are created automatically.
  • memory — Loads and saves to memory/MEMORY.md. load returns MEMORY.md contents; save appends + git commits (every save is a git commit — fully versioned). Auto-archives when max_lines exceeded to memory/archive/<YYYY-MM>.md.

Declarative Tools

# tools/lookup-account.yaml
name: lookup-account
description: Look up account details by customer ID
input_schema:
  properties:
    customer_id:
      type: string
      description: The customer ID
  required: [customer_id]
implementation:
  script: scripts/lookup.sh
  runtime: sh
The script receives JSON args on stdin and outputs plain text on stdout.

Tool Allowlists and Denylists

// SDK — allowlist or denylist per query
for await (const msg of query({
  prompt: "...",
  allowedTools: ["read", "cli"],
  disallowedTools: ["write"],
})) { /* ... */ }

Skills

Reusable task modules the agent learns and crystallizes over time

Workflows

Chain skills into deterministic, repeatable pipelines

Hooks

Intercept, block, or modify agent behavior at every stage

Plugins

Extend GitAgent with installable tools, skills, and hooks