coderClaw

Tools (CoderClaw)

CoderClaw exposes first-class agent tools for browser, canvas, nodes, and cron. These replace the old coderclaw-* skills: the tools are typed, no shelling, and the agent should rely on them directly.

Disabling tools

You can globally allow/deny tools via tools.allow / tools.deny in coderclaw.json (deny wins). This prevents disallowed tools from being sent to model providers.

{
  tools: { deny: ["browser"] },
}

Notes:

Tool profiles (base allowlist)

tools.profile sets a base tool allowlist before tools.allow/tools.deny. Per-agent override: agents.list[].tools.profile.

Profiles:

Example (messaging-only by default, allow Slack + Discord tools too):

{
  tools: {
    profile: "messaging",
    allow: ["slack", "discord"],
  },
}

Example (coding profile, but deny exec/process everywhere):

{
  tools: {
    profile: "coding",
    deny: ["group:runtime"],
  },
}

Example (global coding profile, messaging-only support agent):

{
  tools: { profile: "coding" },
  agents: {
    list: [
      {
        id: "support",
        tools: { profile: "messaging", allow: ["slack"] },
      },
    ],
  },
}

Provider-specific tool policy

Use tools.byProvider to further restrict tools for specific providers (or a single provider/model) without changing your global defaults. Per-agent override: agents.list[].tools.byProvider.

This is applied after the base tool profile and before allow/deny lists, so it can only narrow the tool set. Provider keys accept either provider (e.g. google-antigravity) or provider/model (e.g. openai/gpt-5.2).

Example (keep global coding profile, but minimal tools for Google Antigravity):

{
  tools: {
    profile: "coding",
    byProvider: {
      "google-antigravity": { profile: "minimal" },
    },
  },
}

Example (provider/model-specific allowlist for a flaky endpoint):

{
  tools: {
    allow: ["group:fs", "group:runtime", "sessions_list"],
    byProvider: {
      "openai/gpt-5.2": { allow: ["group:fs", "sessions_list"] },
    },
  },
}

Example (agent-specific override for a single provider):

{
  agents: {
    list: [
      {
        id: "support",
        tools: {
          byProvider: {
            "google-antigravity": { allow: ["message", "sessions_list"] },
          },
        },
      },
    ],
  },
}

Tool groups (shorthands)

Tool policies (global, agent, sandbox) support group:* entries that expand to multiple tools. Use these in tools.allow / tools.deny.

Available groups:

Example (allow only file tools + browser):

{
  tools: {
    allow: ["group:fs", "browser"],
  },
}

Plugins + tools

Plugins can register additional tools (and CLI commands) beyond the core set. See Plugins for install + config, and Skills for how tool usage guidance is injected into prompts. Some plugins ship their own skills alongside tools (for example, the voice-call plugin).

Optional plugin tools:

Tool inventory

apply_patch

Apply structured patches across one or more files. Use for multi-hunk edits. Experimental: enable via tools.exec.applyPatch.enabled (OpenAI models only). tools.exec.applyPatch.workspaceOnly defaults to true (workspace-contained). Set it to false only if you intentionally want apply_patch to write/delete outside the workspace directory.

exec

Run shell commands in the workspace.

Core parameters:

Notes:

process

Manage background exec sessions.

Core actions:

Notes:

loop-detection (tool-call loop guardrails)

CoderClaw tracks recent tool-call history and blocks or warns when it detects repetitive no-progress loops. Enable with tools.loopDetection.enabled: true (default is false).

{
  tools: {
    loopDetection: {
      enabled: true,
      warningThreshold: 10,
      criticalThreshold: 20,
      globalCircuitBreakerThreshold: 30,
      historySize: 30,
      detectors: {
        genericRepeat: true,
        knownPollNoProgress: true,
        pingPong: true,
      },
    },
  },
}

Search the web using Brave Search API.

Core parameters:

Notes:

web_fetch

Fetch and extract readable content from a URL (HTML → markdown/text).

Core parameters:

Notes:

browser

Control the dedicated CoderClaw-managed browser.

Core actions:

Profile management:

Common parameters:

canvas

Drive the node Canvas (present, eval, snapshot, A2UI).

Core actions:

Notes:

nodes

Discover and target paired nodes; send notifications; capture camera/screen.

Core actions:

Notes:

Example (run):

{
  "action": "run",
  "node": "office-mac",
  "command": ["echo", "Hello"],
  "env": ["FOO=bar"],
  "commandTimeoutMs": 12000,
  "invokeTimeoutMs": 45000,
  "needsScreenRecording": false
}

image

Analyze an image with the configured image model.

Core parameters:

Notes:

message

Send messages and channel actions across Discord/Google Chat/Slack/Telegram/WhatsApp/Signal/iMessage/MS Teams.

Core actions:

Notes:

cron

Manage Gateway cron jobs and wakeups.

Core actions:

Notes:

gateway

Restart or apply updates to the running Gateway process (in-place).

Core actions:

Notes:

sessions_list / sessions_history / sessions_send / sessions_spawn / session_status

List sessions, inspect transcript history, or send to another session.

Core parameters:

Notes:

agents_list

List agent ids that the current session may target with sessions_spawn.

Notes:

Parameters (common)

Gateway-backed tools (canvas, nodes, cron):

Note: when gatewayUrl is set, include gatewayToken explicitly. Tools do not inherit config or environment credentials for overrides, and missing explicit credentials is an error.

Browser tool:

Browser automation:

  1. browser → status / start
  2. snapshot (ai or aria)
  3. act (click/type/press)
  4. screenshot if you need visual confirmation

Canvas render:

  1. canvas → present
  2. a2ui_push (optional)
  3. snapshot

Node targeting:

  1. nodes → status
  2. describe on the chosen node
  3. notify / run / camera_snap / screen_record

Safety

How tools are presented to the agent

Tools are exposed in two parallel channels:

  1. System prompt text: a human-readable list + guidance.
  2. Tool schema: the structured function definitions sent to the model API.

That means the agent sees both “what tools exist” and “how to call them.” If a tool doesn’t appear in the system prompt or the schema, the model cannot call it.