Skip to main content

Built-in tools

The default coding-tool bundle registers these tools:
  • read_file
  • write_file
  • edit_file
  • apply_patch
  • list_files
  • glob_search
  • grep_search
  • bash
  • web_search
  • web_fetch

Practical grouping

  • workspace inspection: read_file, list_files, glob_search, grep_search
  • workspace mutation: write_file, edit_file, apply_patch
  • execution: bash
  • research: web_search, web_fetch

Execution notes

  • file and shell tools are workspace-aware
  • file reads/writes are workspace-aware; on Unix they use fd-relative no-follow opens for file access, file writes use atomic replace semantics, path locks include an OS file lock, and writes support optional SHA-256 precondition checks
  • apply_patch applies exact text hunks only after validating every hunk, and rejects binary/non-UTF-8 targets
  • shell execution participates in permissions and can materialize daemon tasks
  • web_search prefers a provider-native backend when the active run route supports it and falls back to the local DuckDuckGo HTML backend otherwise
  • web_fetch is daemon-local even when web_search uses a provider-native backend; it rejects URL credentials, localhost/private-network targets, unsupported binary content types, oversized declared bodies, disables proxy environment handling, validates every manual redirect target, and pins validated DNS answers for each hostname fetch before connecting
  • web tools are networked and should be validated on real providers when behavior changes
The daemon also exposes control and orchestration tools that are not part of the coding-tool bundle, including:
  • agent management and mailbox coordination
  • task workflows and approvals
  • media generation and retained output helpers such as generate_audio, generate_image, edit_image, and emit_output; image tools validate prompt/count/size, persist only decodable PNG/JPEG assets, checksum edit sources before dispatch, and redact image/audio base64 from provider debug payloads; audio generation validates bounded input/voice/format/speed, caps provider response bytes, records response checksums, and persists only payloads that match supported audio container signatures
  • skills and capability-aware orchestration
  • public channel helpers such as read_channel_thread, set_channel_reaction, and create_channel_stimulus
  • project-task helpers: project_list_tasks (find claimable work across the session’s projects; plan-mode safe), project_claim_task (atomically claim one unassigned task whose dependencies are completed and bind it to the current run), project_update_task (record progress, a blocked state, or a final output on a held task — terminal statuses set by the agent survive run settlement), and project_create_task (decompose work into new tasks or subtasks via parent_task_id, optionally self-assigned)
  • board_view and board_draw: board_view (read-only, plan-mode safe) returns a compact scene of a board — its metadata, tip-revision author, placed elements with coordinates, an ASCII occupancy map of which author owns each region, and a hint at the largest free area — so agents can continue an existing drawing instead of starting over; board_draw appends vector elements (paths, lines, arrows, rects, ellipses, text) to a shared whiteboard as a new CAS-guarded revision, rasterizes them over the previous render, stamps each batch with the agent’s name and stable per-session color, and returns the same post-draw scene so agents keep drawing in small, live batches
Public channel replies themselves are currently emitted through emit_output during a ChannelDelivery run rather than through a separate post_channel_message tool. create_channel_stimulus is the current way to request autonomous public channel activity from inside a run. It queues a durable stimulus such as agent_idea, schedule_result, or thread_idle_followup and lets the daemon decide whether that should materialize as a new main-feed root subject or as a continuation of one canonical thread.