Each runtime at a glance
On every runtime, calls to connectors go through Clawboo and follow the rules in Connectors. Team chat and the task runner are the two ways Clawboo runs agents; How a team works explains which work takes which path.
Clawboo Native
Clawboo itself runs these agents, so every tool they have is one Clawboo built:- In team chat, in one-to-one chat and on research and review tasks it works in its team’s folder, with tools to list, read and write files there. In one-to-one chat, an agent on no team works in
~/.clawboo/workspaces/_no-team. - On a task-runner run with a repository it gets the same tools inside the task’s worktree.
- File tools stay inside their folder. A path outside it is refused, and so is a path that leads out of it through a symlink.
- In every run it also works through Clawboo’s tools: the board, memory, the peer room, handing work to teammates, and the connectors you share with it.
- Shell commands are off by default. To turn them on for one agent, open its page, then Details > Permissions, and switch on Let this Boo ask to run commands.
- 59 named programs that run other commands: shells such as
bash, wrappers such asenv,xargsandsudo, interpreters such aspythonandnode, package runners such asnpx, build tools such asmake, and remote runners such assshanddocker. - Scripts whose first line names one of them, such as a file starting
#!/usr/bin/env python3. - Programs given by a relative path, such as
./build.sh.
python3.11 included, and checked again on the real file after following links. It is a speed bump, not a boundary: programs that are not on it, such as git, find or awk, can still start a shell. Your answer on each card is the real control.
Claude Code, Codex and Hermes
Clawboo starts these three runtimes with their own approval prompts and sandboxes turned off:- Claude Code runs in permission mode
bypassPermissions. - Codex runs with approval policy
neverand sandboxdanger-full-access. - Hermes runs with
--yolo.
- Task runner, with a repository: in the task’s own git worktree, a separate checkout under
~/.clawboo/worktrees. That is their starting folder, not a fence. A task that changes files but names no repository is refused, rather than run somewhere else. - Task runner, research or review task: no worktree, even with a repository. Agent Routines you create in the app run this way. They start in the team’s folder, the same as team chat. A task with no team starts in a shared folder,
~/.clawboo/workspaces/_no-team. - Team chat, including board tasks you give an agent: no worktree. They start in the team’s folder,
~/.clawboo/workspaces/<team id>(underCLAWBOO_HOMEwhen you set it). Every member and every room of the team shares this one folder. - One-to-one chat on the agent’s page: no worktree. They start in the team’s folder, or in
~/.clawboo/workspaces/_no-teamfor an agent on no team.
~/.openclaw/.env, where keys saved on the Providers page are copied in plain text.
Claude Code starts without your own Claude Code setup: your ~/.claude settings, plugins, hooks, MCP servers and memory do not apply. It still loads the Claude Code files of the folder it starts in, such as a repository’s CLAUDE.md and .claude/settings.json. Leaving your setup out is not a sandbox: Claude Code can still read any file your user account can, ~/.claude included.
OpenClaw
OpenClaw agents run inside the OpenClaw Gateway, in workspaces the Gateway manages. Clawboo never gives them a worktree, and OpenClaw’s own sandbox settings decide what they can touch (OpenClaw sandboxing). Shell commands follow each agent’s Command Execution setting, on the agent’s page under Details > Permissions:
An OpenClaw agent you create in Clawboo starts on Ask for Unknown. The cards appear under Needs you and in the chat. Clawboo’s server keeps them, so they wait even with the tab closed: until the Gateway’s deadline, or 30 minutes when it sets none. Command permissions shows what OpenClaw already allows without asking.
Clawboo also denies OpenClaw’s own sub-agent tools (
sessions_spawn, sessions_yield), so an OpenClaw agent cannot start helpers outside the team.
Connectors
A connector links an outside app or tool, such as GitHub or a web browser. Every call to one goes through Clawboo, whatever runtime the agent uses:- An agent reaches a connector only after you share it. Drag the connector onto the agent on the Org chart or a team graph, and pick Read, Write or Admin. Connecting a connector gives no agent access by itself.
- Every new agent gets the two built-in browser connectors (Playwright and Chrome DevTools) at Write. You can stop sharing them on the graph.
- With Write, risky calls ask first. For a connector that can reach the internet, any call that changes something asks you. When the card offers Do not ask again for this for 30 days, ticking it allows that tool for 30 days.
- A run that might leak data always asks. Once a run has read private data and taken in untrusted content, every connector call that can send data out asks you, and the card offers no way to skip it next time.
- OpenClaw agents call connectors without an agent identity. Connectors you share with an agent do not reach them, and their calls to apps through Composio ask you each time.
What Clawboo checks itself
These controls are Clawboo’s own. None of them adds an approval step to the tools Claude Code, Codex and Hermes bring with them.Approvals
Everything that waits for your yes lands in the same places: the Needs you column on the Board, the Tasks card in a team’s chat, and cards in the chat itself. That covers Clawboo Native shell commands, OpenClaw shell commands, connector calls that need a yes, and risky hand-offs. Approvals shows what each card does.Risky hand-offs
When an agent in team chat hands off a task whose text contains a risky word, the hand-off waits for you. The check matches whole words, in any letter case:- delete, destroy, deploy, publish, release, secret, credential, prod, production
- the phrases drop table and rm -rf
- api_key, api-key or apikey, and force-push, force_push or forcepush
allow_always answer sent through the API allows that one hand-off, and the next risky hand-off asks again. Budgets and guardrails has the full rules.
Budgets
A budget counts what your agents spend and warns you as it fills. That is the default. A hard cap, which pauses work at 100%, is opt-in. In team chat a paused hard cap refuses new runs, but it stops a run already going only on Clawboo Native with a model Clawboo prices. Budgets and guardrails has the details for each path.Circuit breakers
Only task-runner runs have circuit breakers. Such a run stops after more than 30 tool calls, the same failing call 3 times in a row, 6 tool results in a row that add nothing new, more than 200,000 tokens a minute, or 2 refusals in a row. Team chat has its own limits instead. A turn can hand off at most 8 tasks, and hand-offs go at most three levels deep. Clawboo stops handing a task to a teammate that failed it 3 times, and stops a teammate that goes silent for 8 minutes. Limits and defaults lists every number.Images in agent text
An image in an agent’s markdown never loads on its own. In chat, a task’s report and its comments, it shows as a link named after its alt text, and it opens only when you click it. That way an agent steered by something it read cannot send data out in an image’s address without your click.What this does not cover
- Clawboo sandboxes no runtime. A worktree is a starting folder. The network, files outside it and other programs stay within reach of Claude Code, Codex and Hermes.
- Approvals guard against a confused or misled model, not against programs on your computer. With no access token set, any program on your computer can call Clawboo’s API, including a command an agent runs, and it could answer an approval card itself. Setting
STUDIO_ACCESS_TOKENcloses the API to other user accounts, and Clawboo never hands the token to the agents it starts. A program running as you can still read your files, including Clawboo’s database and key vault, so nothing in Clawboo fully contains it. See Security. - Clawboo does not limit where agents connect. Runtimes reach their providers, and anything else on the network, directly. Only connector calls pass through Clawboo.
A safer setup
- Give Clawboo its own user account. For work you do not fully trust, run Clawboo under a separate user account on your computer, or in a virtual machine. A coding runtime can then reach only what that account can.
- Hand coding runtimes only work you would let them do unattended. In team chat they run without prompts, and their team’s folder does not limit what they can reach.
- Connect only accounts you would hand to the agent yourself. Share each connector only with the agents that need it, at Read unless they must change things.
- Turn on shell commands sparingly. Leave Clawboo Native shell commands off unless an agent needs them, and keep OpenClaw agents on Ask for Unknown or Always Ask.
- Put a budget on spend, and switch it to hard cap when money matters: see Budgets and spend.
- Set an access token before you open Clawboo to other computers, and to keep other user accounts on this one out of the API: see Self-host securely.
Under the hood
Under the hood
- Driver settings. Claude Code runs through the Agent SDK
query()withpermissionMode: 'bypassPermissions'andallowDangerouslySkipPermissions: true. It loads only the project settings source (settingSources: ['project']), with auto memory off and everyCLAUDE.mdabove the working folder excluded (apps/web/server/lib/runtimes/claudeCodeIsolation.ts). Codex runscodex app-serverwithapprovalPolicy: 'never'andsandbox: 'danger-full-access'; itscodex execfallback passes--dangerously-bypass-approvals-and-sandbox(codexAppServerDriver.ts,codexDriver.ts). Hermes runshermes chatwith--yolo --accept-hooks(hermesDriver.ts). - Working folder. Team-chat runs (
serverDeliver.tsandrunTeamExchange.tsinapps/web/server/lib/teamChat/) and task-runner runs without a worktree setcwdto<CLAWBOO_HOME>/workspaces/<teamId>, orworkspaces/_no-teamfor a task with no team, for Claude Code, Codex, Hermes and Clawboo Native (apps/web/server/lib/runtimes/teamWorkdir.ts). The folder is created with mode0700before the run starts, and a run whose folder cannot be created fails instead of starting in the server’s working directory. One-to-one chat (apps/web/server/lib/agentChat/driveAgentChat.ts) sets the samecwdfor those four runtimes, with_no-teamfor an agent on no team. - Task-runner isolation. Task kinds
researchandreviewget no worktree. Any other kind needs arepoPath, or the run fails withworkspace_unavailable(apps/web/server/lib/executorRunner.ts,packages/worktrees/src/isolation.ts). - Native tools.
buildFileToolsandbuildExecToolreturn no tools when the run has nocwd(apps/web/server/lib/runtimes/native/). The file tools refuse a path that is a symlink, or that resolves outside thecwdonce every symlink above it is followed (resolveJailedOnDiskinfileTools.ts). - Environment scrubbing.
apps/web/server/lib/runtimes/childEnv.tslists the removed variables. - Connector decisions.
decideGrantinpackages/governance/src/grants/decide.ts; a new grant’s approval policy defaults torisk. - Risky hand-offs. The word list is in
apps/web/server/lib/teamChat/riskyDelegation.ts. Each risky hand-off opens its own approval under the scopedelegate:code, marked never-remember (apps/web/server/api/delegationApproval.ts). - No hidden approval layer. The task runner’s
routeApprovalsThroughClawbooflag only adds a note to the prompt (apps/web/server/lib/degradation.ts).
Related
- Approvals: answer the cards under Needs you.
- Command permissions: what OpenClaw agents may already run without asking.
- Budgets and guardrails: spend limits, caps and circuit breakers on each path.
- Security: the access token and network exposure.
- Worktrees and handoff: what a worktree is for.