Agent Experience — Ctrl Dot

This doc is for agents and tooling that need to discover Ctrl Dot, interpret “why blocked” signals, and suggest enablement steps.


How agents detect Ctrl Dot

HTTP: GET /v1/capabilities returns a JSON object describing the daemon and its effective configuration (no secrets).

curl http://127.0.0.1:7777/v1/capabilities

Response shape (v1):

MCP / CLI: If using the Ctrl Dot MCP CLI:

ctrldot-mcp capabilities
# or
CTRLDOT_URL=http://127.0.0.1:7777 ctrldot-mcp capabilities

Output is the same JSON as the API.


How to interpret recommendation objects

When POST /v1/actions/propose returns DENY, STOP, or THROTTLE, the response can include:

Use recommendation.next_steps to suggest exact commands to the user. Use reasons[].code for programmatic handling (e.g. “if PANIC_RESOLUTION_REQUIRED, show resolve instructions”).


When to enable panic mode

Panic mode tightens budget, resolution, filesystem/network, and loop detection without editing config.

Use panic when running untrusted prompts, unattended agents, or new adapters. When panic is on, many actions will require resolution or be denied until the user runs ctrldot resolve allow-once or disables panic.


How to use resolution tokens

Actions that require resolution (e.g. exec, git.push, filesystem.write) are DENY until a short-lived token is issued.

  1. User runs: ctrldot resolve allow-once --agent <agent_id> --ttl 120s (or equivalent via API).
  2. The client then sends the same proposal again with the resolution token set (or the adapter obtains the token and retries).
  3. Ctrl Dot returns ALLOW for that one action within the TTL.

Recommendation objects for “resolution required” denials include a next_steps entry like:

ctrldot resolve allow-once --agent <agent_id> --ttl 120s


How bundles help (sharing / debugging)

When auto-bundles are enabled, DENY/STOP (and shutdown) produce a signed bundle directory containing:

The propose response can include autobundle_path when a bundle was written. Agents can:

The README inside the bundle repeats the suggested next steps so the recipient can run them without calling the API again.


OpenClaw: reading recommendation in tool output

The ctrldot_propose tool returns the full decision JSON. When the decision is DENY or STOP, the tool prepends a short block so the agent sees:

Then the full JSON follows. So the model can both reason over the structured fields (reasons, recommendation, autobundle_path) and surface the same to the user in natural language.