@quantumclaw/quantumclaw 2026.3.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4601 -0
- package/LICENSE +21 -0
- package/README.md +559 -0
- package/assets/avatar-placeholder.svg +19 -0
- package/assets/chrome-extension/icons/icon128.png +0 -0
- package/assets/chrome-extension/icons/icon16.png +0 -0
- package/assets/chrome-extension/icons/icon32.png +0 -0
- package/assets/chrome-extension/icons/icon48.png +0 -0
- package/assets/dmg-background-small.png +0 -0
- package/assets/dmg-background.png +0 -0
- package/docs/.i18n/README.md +31 -0
- package/docs/.i18n/glossary.ja-JP.json +14 -0
- package/docs/.i18n/glossary.zh-CN.json +302 -0
- package/docs/.i18n/ja-JP.tm.jsonl +0 -0
- package/docs/assets/install-script.svg +1 -0
- package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
- package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
- package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
- package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
- package/docs/assets/macos-onboarding/05-permissions.png +0 -0
- package/docs/assets/pixel-lobster.svg +60 -0
- package/docs/assets/quantumclaw-logo-text-dark.png +0 -0
- package/docs/assets/quantumclaw-logo-text-dark.svg +418 -0
- package/docs/assets/quantumclaw-logo-text.png +0 -0
- package/docs/assets/quantumclaw-logo-text.svg +418 -0
- package/docs/assets/showcase/agents-ui.jpg +0 -0
- package/docs/assets/showcase/bambu-cli.png +0 -0
- package/docs/assets/showcase/codexmonitor.png +0 -0
- package/docs/assets/showcase/gohome-grafana.png +0 -0
- package/docs/assets/showcase/ios-testflight.jpg +0 -0
- package/docs/assets/showcase/oura-health.png +0 -0
- package/docs/assets/showcase/padel-cli.svg +11 -0
- package/docs/assets/showcase/padel-screenshot.jpg +0 -0
- package/docs/assets/showcase/papla-tts.jpg +0 -0
- package/docs/assets/showcase/pr-review-telegram.jpg +0 -0
- package/docs/assets/showcase/roborock-screenshot.jpg +0 -0
- package/docs/assets/showcase/roborock-status.svg +13 -0
- package/docs/assets/showcase/roof-camera-sky.jpg +0 -0
- package/docs/assets/showcase/snag.png +0 -0
- package/docs/assets/showcase/tesco-shop.jpg +0 -0
- package/docs/assets/showcase/wienerlinien.png +0 -0
- package/docs/assets/showcase/wine-cellar-skill.jpg +0 -0
- package/docs/assets/showcase/winix-air-purifier.jpg +0 -0
- package/docs/assets/showcase/xuezh-pronunciation.jpeg +0 -0
- package/docs/assets/sponsors/blacksmith.svg +14 -0
- package/docs/assets/sponsors/convex.svg +16 -0
- package/docs/assets/sponsors/openai.svg +3 -0
- package/docs/assets/sponsors/vercel.svg +5 -0
- package/docs/auth-credential-semantics.md +53 -0
- package/docs/automation/auth-monitoring.md +44 -0
- package/docs/automation/cron-jobs.md +727 -0
- package/docs/automation/cron-vs-heartbeat.md +286 -0
- package/docs/automation/gmail-pubsub.md +256 -0
- package/docs/automation/hooks.md +1056 -0
- package/docs/automation/poll.md +86 -0
- package/docs/automation/standing-orders.md +251 -0
- package/docs/automation/troubleshooting.md +122 -0
- package/docs/automation/webhook.md +217 -0
- package/docs/brave-search.md +93 -0
- package/docs/channels/bluebubbles.md +347 -0
- package/docs/channels/broadcast-groups.md +442 -0
- package/docs/channels/channel-routing.md +139 -0
- package/docs/channels/discord.md +1229 -0
- package/docs/channels/feishu.md +747 -0
- package/docs/channels/googlechat.md +261 -0
- package/docs/channels/group-messages.md +84 -0
- package/docs/channels/groups.md +379 -0
- package/docs/channels/imessage.md +367 -0
- package/docs/channels/index.md +47 -0
- package/docs/channels/irc.md +242 -0
- package/docs/channels/line.md +194 -0
- package/docs/channels/location.md +56 -0
- package/docs/channels/matrix.md +677 -0
- package/docs/channels/mattermost.md +427 -0
- package/docs/channels/msteams.md +780 -0
- package/docs/channels/nextcloud-talk.md +138 -0
- package/docs/channels/nostr.md +249 -0
- package/docs/channels/pairing.md +114 -0
- package/docs/channels/signal.md +329 -0
- package/docs/channels/slack.md +603 -0
- package/docs/channels/synology-chat.md +134 -0
- package/docs/channels/telegram.md +987 -0
- package/docs/channels/tlon.md +276 -0
- package/docs/channels/troubleshooting.md +118 -0
- package/docs/channels/twitch.md +379 -0
- package/docs/channels/whatsapp.md +460 -0
- package/docs/channels/zalo.md +243 -0
- package/docs/channels/zalouser.md +181 -0
- package/docs/ci.md +55 -0
- package/docs/cli/acp.md +288 -0
- package/docs/cli/agent.md +29 -0
- package/docs/cli/agents.md +123 -0
- package/docs/cli/approvals.md +50 -0
- package/docs/cli/backup.md +76 -0
- package/docs/cli/browser.md +106 -0
- package/docs/cli/channels.md +102 -0
- package/docs/cli/clawbot.md +21 -0
- package/docs/cli/completion.md +35 -0
- package/docs/cli/config.md +295 -0
- package/docs/cli/configure.md +36 -0
- package/docs/cli/cron.md +77 -0
- package/docs/cli/daemon.md +53 -0
- package/docs/cli/dashboard.md +22 -0
- package/docs/cli/devices.md +139 -0
- package/docs/cli/directory.md +63 -0
- package/docs/cli/dns.md +23 -0
- package/docs/cli/docs.md +15 -0
- package/docs/cli/doctor.md +48 -0
- package/docs/cli/gateway.md +235 -0
- package/docs/cli/health.md +21 -0
- package/docs/cli/hooks.md +329 -0
- package/docs/cli/index.md +1150 -0
- package/docs/cli/logs.md +28 -0
- package/docs/cli/memory.md +66 -0
- package/docs/cli/message.md +278 -0
- package/docs/cli/models.md +81 -0
- package/docs/cli/node.md +127 -0
- package/docs/cli/nodes.md +75 -0
- package/docs/cli/onboard.md +157 -0
- package/docs/cli/pairing.md +32 -0
- package/docs/cli/plugins.md +210 -0
- package/docs/cli/qr.md +46 -0
- package/docs/cli/reset.md +20 -0
- package/docs/cli/sandbox.md +197 -0
- package/docs/cli/secrets.md +188 -0
- package/docs/cli/security.md +79 -0
- package/docs/cli/sessions.md +110 -0
- package/docs/cli/setup.md +29 -0
- package/docs/cli/skills.md +36 -0
- package/docs/cli/status.md +30 -0
- package/docs/cli/system.md +60 -0
- package/docs/cli/tui.md +30 -0
- package/docs/cli/uninstall.md +20 -0
- package/docs/cli/update.md +103 -0
- package/docs/cli/voicecall.md +34 -0
- package/docs/cli/webhooks.md +25 -0
- package/docs/concepts/agent-loop.md +148 -0
- package/docs/concepts/agent-workspace.md +236 -0
- package/docs/concepts/agent.md +122 -0
- package/docs/concepts/architecture.md +137 -0
- package/docs/concepts/compaction.md +123 -0
- package/docs/concepts/context-engine.md +268 -0
- package/docs/concepts/context.md +172 -0
- package/docs/concepts/delegate-architecture.md +296 -0
- package/docs/concepts/features.md +73 -0
- package/docs/concepts/markdown-formatting.md +130 -0
- package/docs/concepts/memory.md +108 -0
- package/docs/concepts/messages.md +154 -0
- package/docs/concepts/model-failover.md +152 -0
- package/docs/concepts/model-providers.md +607 -0
- package/docs/concepts/models.md +225 -0
- package/docs/concepts/multi-agent.md +552 -0
- package/docs/concepts/oauth.md +158 -0
- package/docs/concepts/presence.md +102 -0
- package/docs/concepts/queue.md +89 -0
- package/docs/concepts/retry.md +69 -0
- package/docs/concepts/session-pruning.md +121 -0
- package/docs/concepts/session-tool.md +242 -0
- package/docs/concepts/session.md +310 -0
- package/docs/concepts/streaming.md +155 -0
- package/docs/concepts/system-prompt.md +132 -0
- package/docs/concepts/timezone.md +91 -0
- package/docs/concepts/typebox.md +291 -0
- package/docs/concepts/typing-indicators.md +68 -0
- package/docs/concepts/usage-tracking.md +35 -0
- package/docs/date-time.md +128 -0
- package/docs/debug/node-issue.md +85 -0
- package/docs/diagnostics/flags.md +91 -0
- package/docs/docs.json +2078 -0
- package/docs/gateway/authentication.md +179 -0
- package/docs/gateway/background-process.md +97 -0
- package/docs/gateway/bonjour.md +177 -0
- package/docs/gateway/bridge-protocol.md +91 -0
- package/docs/gateway/cli-backends.md +225 -0
- package/docs/gateway/configuration-examples.md +651 -0
- package/docs/gateway/configuration-reference.md +3123 -0
- package/docs/gateway/configuration.md +633 -0
- package/docs/gateway/discovery.md +123 -0
- package/docs/gateway/doctor.md +362 -0
- package/docs/gateway/gateway-lock.md +34 -0
- package/docs/gateway/health.md +44 -0
- package/docs/gateway/heartbeat.md +393 -0
- package/docs/gateway/index.md +261 -0
- package/docs/gateway/local-models.md +152 -0
- package/docs/gateway/logging.md +113 -0
- package/docs/gateway/multiple-gateways.md +112 -0
- package/docs/gateway/network-model.md +22 -0
- package/docs/gateway/openai-http-api.md +132 -0
- package/docs/gateway/openresponses-http-api.md +295 -0
- package/docs/gateway/openshell.md +307 -0
- package/docs/gateway/pairing.md +99 -0
- package/docs/gateway/protocol.md +267 -0
- package/docs/gateway/remote-gateway-readme.md +158 -0
- package/docs/gateway/remote.md +153 -0
- package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +134 -0
- package/docs/gateway/sandboxing.md +469 -0
- package/docs/gateway/secrets-plan-contract.md +116 -0
- package/docs/gateway/secrets.md +503 -0
- package/docs/gateway/security/index.md +1220 -0
- package/docs/gateway/tailscale.md +132 -0
- package/docs/gateway/tools-invoke-http-api.md +118 -0
- package/docs/gateway/troubleshooting.md +378 -0
- package/docs/gateway/trusted-proxy-auth.md +330 -0
- package/docs/help/debugging.md +168 -0
- package/docs/help/environment.md +163 -0
- package/docs/help/faq.md +2997 -0
- package/docs/help/index.md +28 -0
- package/docs/help/scripts.md +28 -0
- package/docs/help/testing.md +526 -0
- package/docs/help/troubleshooting.md +297 -0
- package/docs/images/configure-model-picker-unsearchable.png +0 -0
- package/docs/images/feishu-step2-create-app.png +0 -0
- package/docs/images/feishu-step3-credentials.png +0 -0
- package/docs/images/feishu-step4-permissions.png +0 -0
- package/docs/images/feishu-step5-bot-capability.png +0 -0
- package/docs/images/feishu-step6-event-subscription.png +0 -0
- package/docs/images/feishu-verification-token.png +0 -0
- package/docs/images/groups-flow.svg +52 -0
- package/docs/images/mobile-ui-screenshot.png +0 -0
- package/docs/index.md +196 -0
- package/docs/install/ansible.md +230 -0
- package/docs/install/azure.md +311 -0
- package/docs/install/bun.md +55 -0
- package/docs/install/development-channels.md +120 -0
- package/docs/install/digitalocean.md +129 -0
- package/docs/install/docker-vm-runtime.md +142 -0
- package/docs/install/docker.md +375 -0
- package/docs/install/exe-dev.md +126 -0
- package/docs/install/fly.md +501 -0
- package/docs/install/gcp.md +402 -0
- package/docs/install/hetzner.md +251 -0
- package/docs/install/index.md +183 -0
- package/docs/install/installer.md +415 -0
- package/docs/install/kubernetes.md +191 -0
- package/docs/install/macos-vm.md +281 -0
- package/docs/install/migrating-matrix.md +346 -0
- package/docs/install/migrating.md +110 -0
- package/docs/install/nix.md +89 -0
- package/docs/install/node.md +138 -0
- package/docs/install/northflank.mdx +54 -0
- package/docs/install/oracle.md +156 -0
- package/docs/install/podman.md +133 -0
- package/docs/install/railway.mdx +100 -0
- package/docs/install/raspberry-pi.md +159 -0
- package/docs/install/render.mdx +169 -0
- package/docs/install/uninstall.md +128 -0
- package/docs/install/updating.md +128 -0
- package/docs/ja-JP/index.md +186 -0
- package/docs/ja-JP/start/getting-started.md +125 -0
- package/docs/ja-JP/start/wizard.md +77 -0
- package/docs/logging.md +352 -0
- package/docs/nav-tabs-underline.js +100 -0
- package/docs/network.md +54 -0
- package/docs/nodes/audio.md +187 -0
- package/docs/nodes/camera.md +162 -0
- package/docs/nodes/images.md +72 -0
- package/docs/nodes/index.md +393 -0
- package/docs/nodes/location-command.md +98 -0
- package/docs/nodes/media-understanding.md +394 -0
- package/docs/nodes/talk.md +92 -0
- package/docs/nodes/troubleshooting.md +114 -0
- package/docs/nodes/voicewake.md +66 -0
- package/docs/perplexity.md +174 -0
- package/docs/pi-dev.md +80 -0
- package/docs/pi.md +567 -0
- package/docs/platforms/android.md +168 -0
- package/docs/platforms/digitalocean.md +266 -0
- package/docs/platforms/index.md +54 -0
- package/docs/platforms/ios.md +220 -0
- package/docs/platforms/linux.md +94 -0
- package/docs/platforms/mac/bundled-gateway.md +73 -0
- package/docs/platforms/mac/canvas.md +125 -0
- package/docs/platforms/mac/child-process.md +69 -0
- package/docs/platforms/mac/dev-setup.md +104 -0
- package/docs/platforms/mac/health.md +34 -0
- package/docs/platforms/mac/icon.md +31 -0
- package/docs/platforms/mac/logging.md +57 -0
- package/docs/platforms/mac/menu-bar.md +81 -0
- package/docs/platforms/mac/peekaboo.md +65 -0
- package/docs/platforms/mac/permissions.md +50 -0
- package/docs/platforms/mac/remote.md +84 -0
- package/docs/platforms/mac/signing.md +47 -0
- package/docs/platforms/mac/skills.md +33 -0
- package/docs/platforms/mac/voice-overlay.md +60 -0
- package/docs/platforms/mac/voicewake.md +67 -0
- package/docs/platforms/mac/webchat.md +43 -0
- package/docs/platforms/mac/xpc.md +61 -0
- package/docs/platforms/macos.md +226 -0
- package/docs/platforms/oracle.md +303 -0
- package/docs/platforms/raspberry-pi.md +412 -0
- package/docs/platforms/windows.md +241 -0
- package/docs/plugins/agent-tools.md +10 -0
- package/docs/plugins/architecture.md +1366 -0
- package/docs/plugins/building-extensions.md +10 -0
- package/docs/plugins/building-plugins.md +239 -0
- package/docs/plugins/bundles.md +181 -0
- package/docs/plugins/community.md +145 -0
- package/docs/plugins/manifest.md +241 -0
- package/docs/plugins/sdk-channel-plugins.md +370 -0
- package/docs/plugins/sdk-entrypoints.md +161 -0
- package/docs/plugins/sdk-migration.md +172 -0
- package/docs/plugins/sdk-overview.md +196 -0
- package/docs/plugins/sdk-provider-plugins.md +370 -0
- package/docs/plugins/sdk-runtime.md +345 -0
- package/docs/plugins/sdk-setup.md +331 -0
- package/docs/plugins/sdk-testing.md +263 -0
- package/docs/plugins/voice-call.md +380 -0
- package/docs/plugins/zalouser.md +77 -0
- package/docs/prose.md +134 -0
- package/docs/providers/anthropic.md +259 -0
- package/docs/providers/bedrock.md +176 -0
- package/docs/providers/claude-max-api-proxy.md +154 -0
- package/docs/providers/cloudflare-ai-gateway.md +71 -0
- package/docs/providers/deepgram.md +93 -0
- package/docs/providers/github-copilot.md +72 -0
- package/docs/providers/glm.md +43 -0
- package/docs/providers/google.md +78 -0
- package/docs/providers/groq.md +96 -0
- package/docs/providers/huggingface.md +209 -0
- package/docs/providers/index.md +69 -0
- package/docs/providers/kilocode.md +74 -0
- package/docs/providers/litellm.md +154 -0
- package/docs/providers/minimax.md +224 -0
- package/docs/providers/mistral.md +54 -0
- package/docs/providers/models.md +45 -0
- package/docs/providers/modelstudio.md +66 -0
- package/docs/providers/moonshot.md +175 -0
- package/docs/providers/nvidia.md +55 -0
- package/docs/providers/ollama.md +352 -0
- package/docs/providers/openai.md +303 -0
- package/docs/providers/opencode-go.md +45 -0
- package/docs/providers/opencode.md +64 -0
- package/docs/providers/openrouter.md +37 -0
- package/docs/providers/perplexity-provider.md +62 -0
- package/docs/providers/qianfan.md +38 -0
- package/docs/providers/qwen.md +53 -0
- package/docs/providers/sglang.md +104 -0
- package/docs/providers/synthetic.md +99 -0
- package/docs/providers/together.md +66 -0
- package/docs/providers/venice.md +282 -0
- package/docs/providers/vercel-ai-gateway.md +60 -0
- package/docs/providers/vllm.md +92 -0
- package/docs/providers/volcengine.md +74 -0
- package/docs/providers/xai.md +60 -0
- package/docs/providers/xiaomi.md +86 -0
- package/docs/providers/zai.md +46 -0
- package/docs/reference/AGENTS.default.md +126 -0
- package/docs/reference/RELEASING.md +42 -0
- package/docs/reference/api-usage-costs.md +144 -0
- package/docs/reference/credits.md +30 -0
- package/docs/reference/device-models.md +47 -0
- package/docs/reference/memory-config.md +711 -0
- package/docs/reference/prompt-caching.md +185 -0
- package/docs/reference/rpc.md +43 -0
- package/docs/reference/secretref-credential-surface.md +140 -0
- package/docs/reference/secretref-user-supplied-credentials-matrix.json +563 -0
- package/docs/reference/session-management-compaction.md +324 -0
- package/docs/reference/templates/AGENTS.dev.md +83 -0
- package/docs/reference/templates/AGENTS.md +219 -0
- package/docs/reference/templates/BOOT.md +11 -0
- package/docs/reference/templates/BOOTSTRAP.md +62 -0
- package/docs/reference/templates/HEARTBEAT.md +14 -0
- package/docs/reference/templates/IDENTITY.dev.md +47 -0
- package/docs/reference/templates/IDENTITY.md +29 -0
- package/docs/reference/templates/SOUL.dev.md +76 -0
- package/docs/reference/templates/SOUL.md +43 -0
- package/docs/reference/templates/TOOLS.dev.md +24 -0
- package/docs/reference/templates/TOOLS.md +47 -0
- package/docs/reference/templates/USER.dev.md +18 -0
- package/docs/reference/templates/USER.md +23 -0
- package/docs/reference/test.md +90 -0
- package/docs/reference/token-use.md +175 -0
- package/docs/reference/transcript-hygiene.md +151 -0
- package/docs/reference/wizard.md +235 -0
- package/docs/security/CONTRIBUTING-THREAT-MODEL.md +98 -0
- package/docs/security/THREAT-MODEL-ATLAS.md +611 -0
- package/docs/security/formal-verification.md +167 -0
- package/docs/start/bootstrapping.md +41 -0
- package/docs/start/docs-directory.md +66 -0
- package/docs/start/getting-started.md +116 -0
- package/docs/start/hubs.md +198 -0
- package/docs/start/lore.md +219 -0
- package/docs/start/onboarding-overview.md +67 -0
- package/docs/start/onboarding.md +91 -0
- package/docs/start/openclaw.md +221 -0
- package/docs/start/quickstart.md +22 -0
- package/docs/start/setup.md +164 -0
- package/docs/start/showcase.md +418 -0
- package/docs/start/wizard-cli-automation.md +215 -0
- package/docs/start/wizard-cli-reference.md +299 -0
- package/docs/start/wizard.md +125 -0
- package/docs/style.css +37 -0
- package/docs/tools/acp-agents.md +623 -0
- package/docs/tools/agent-send.md +100 -0
- package/docs/tools/apply-patch.md +51 -0
- package/docs/tools/brave-search.md +93 -0
- package/docs/tools/browser-linux-troubleshooting.md +138 -0
- package/docs/tools/browser-login.md +73 -0
- package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +211 -0
- package/docs/tools/browser.md +731 -0
- package/docs/tools/btw.md +142 -0
- package/docs/tools/capability-cookbook.md +119 -0
- package/docs/tools/clawhub.md +298 -0
- package/docs/tools/creating-skills.md +117 -0
- package/docs/tools/diffs.md +386 -0
- package/docs/tools/elevated.md +114 -0
- package/docs/tools/exec-approvals.md +430 -0
- package/docs/tools/exec.md +207 -0
- package/docs/tools/firecrawl.md +140 -0
- package/docs/tools/index.md +137 -0
- package/docs/tools/llm-task.md +119 -0
- package/docs/tools/lobster.md +340 -0
- package/docs/tools/loop-detection.md +100 -0
- package/docs/tools/multi-agent-sandbox-tools.md +364 -0
- package/docs/tools/pdf.md +156 -0
- package/docs/tools/perplexity-search.md +174 -0
- package/docs/tools/plugin.md +255 -0
- package/docs/tools/reactions.md +64 -0
- package/docs/tools/skills-config.md +86 -0
- package/docs/tools/skills.md +309 -0
- package/docs/tools/slash-commands.md +294 -0
- package/docs/tools/subagents.md +295 -0
- package/docs/tools/tavily.md +125 -0
- package/docs/tools/thinking.md +96 -0
- package/docs/tools/tts.md +406 -0
- package/docs/tools/web.md +516 -0
- package/docs/tts.md +406 -0
- package/docs/vps.md +112 -0
- package/docs/web/control-ui.md +275 -0
- package/docs/web/dashboard.md +54 -0
- package/docs/web/index.md +120 -0
- package/docs/web/tui.md +170 -0
- package/docs/web/webchat.md +61 -0
- package/docs/whatsapp-openclaw-ai-zh.jpg +0 -0
- package/docs/whatsapp-openclaw.jpg +0 -0
- package/docs/zh-CN/AGENTS.md +61 -0
- package/docs/zh-CN/automation/auth-monitoring.md +47 -0
- package/docs/zh-CN/automation/cron-jobs.md +435 -0
- package/docs/zh-CN/automation/cron-vs-heartbeat.md +286 -0
- package/docs/zh-CN/automation/gmail-pubsub.md +249 -0
- package/docs/zh-CN/automation/hooks.md +1051 -0
- package/docs/zh-CN/automation/poll.md +76 -0
- package/docs/zh-CN/automation/troubleshooting.md +8 -0
- package/docs/zh-CN/automation/webhook.md +163 -0
- package/docs/zh-CN/brave-search.md +60 -0
- package/docs/zh-CN/channels/bluebubbles.md +354 -0
- package/docs/zh-CN/channels/broadcast-groups.md +449 -0
- package/docs/zh-CN/channels/channel-routing.md +117 -0
- package/docs/zh-CN/channels/discord.md +468 -0
- package/docs/zh-CN/channels/feishu.md +728 -0
- package/docs/zh-CN/channels/googlechat.md +257 -0
- package/docs/zh-CN/channels/grammy.md +38 -0
- package/docs/zh-CN/channels/group-messages.md +91 -0
- package/docs/zh-CN/channels/groups.md +379 -0
- package/docs/zh-CN/channels/imessage.md +302 -0
- package/docs/zh-CN/channels/index.md +53 -0
- package/docs/zh-CN/channels/line.md +180 -0
- package/docs/zh-CN/channels/location.md +63 -0
- package/docs/zh-CN/channels/matrix.md +221 -0
- package/docs/zh-CN/channels/mattermost.md +144 -0
- package/docs/zh-CN/channels/msteams.md +775 -0
- package/docs/zh-CN/channels/nextcloud-talk.md +142 -0
- package/docs/zh-CN/channels/nostr.md +249 -0
- package/docs/zh-CN/channels/pairing.md +89 -0
- package/docs/zh-CN/channels/signal.md +209 -0
- package/docs/zh-CN/channels/slack.md +531 -0
- package/docs/zh-CN/channels/synology-chat.md +138 -0
- package/docs/zh-CN/channels/telegram.md +751 -0
- package/docs/zh-CN/channels/tlon.md +136 -0
- package/docs/zh-CN/channels/troubleshooting.md +36 -0
- package/docs/zh-CN/channels/twitch.md +385 -0
- package/docs/zh-CN/channels/whatsapp.md +411 -0
- package/docs/zh-CN/channels/zalo.md +196 -0
- package/docs/zh-CN/channels/zalouser.md +147 -0
- package/docs/zh-CN/cli/acp.md +173 -0
- package/docs/zh-CN/cli/agent.md +30 -0
- package/docs/zh-CN/cli/agents.md +82 -0
- package/docs/zh-CN/cli/approvals.md +57 -0
- package/docs/zh-CN/cli/browser.md +114 -0
- package/docs/zh-CN/cli/channels.md +86 -0
- package/docs/zh-CN/cli/config.md +57 -0
- package/docs/zh-CN/cli/configure.md +38 -0
- package/docs/zh-CN/cli/cron.md +43 -0
- package/docs/zh-CN/cli/dashboard.md +23 -0
- package/docs/zh-CN/cli/devices.md +74 -0
- package/docs/zh-CN/cli/directory.md +70 -0
- package/docs/zh-CN/cli/dns.md +30 -0
- package/docs/zh-CN/cli/docs.md +22 -0
- package/docs/zh-CN/cli/doctor.md +48 -0
- package/docs/zh-CN/cli/gateway.md +206 -0
- package/docs/zh-CN/cli/health.md +28 -0
- package/docs/zh-CN/cli/hooks.md +298 -0
- package/docs/zh-CN/cli/index.md +1143 -0
- package/docs/zh-CN/cli/logs.md +31 -0
- package/docs/zh-CN/cli/memory.md +52 -0
- package/docs/zh-CN/cli/message.md +246 -0
- package/docs/zh-CN/cli/models.md +85 -0
- package/docs/zh-CN/cli/node.md +115 -0
- package/docs/zh-CN/cli/nodes.md +80 -0
- package/docs/zh-CN/cli/onboard.md +164 -0
- package/docs/zh-CN/cli/pairing.md +28 -0
- package/docs/zh-CN/cli/plugins.md +66 -0
- package/docs/zh-CN/cli/reset.md +24 -0
- package/docs/zh-CN/cli/sandbox.md +158 -0
- package/docs/zh-CN/cli/security.md +33 -0
- package/docs/zh-CN/cli/sessions.md +23 -0
- package/docs/zh-CN/cli/setup.md +36 -0
- package/docs/zh-CN/cli/skills.md +33 -0
- package/docs/zh-CN/cli/status.md +33 -0
- package/docs/zh-CN/cli/system.md +63 -0
- package/docs/zh-CN/cli/tui.md +30 -0
- package/docs/zh-CN/cli/uninstall.md +24 -0
- package/docs/zh-CN/cli/update.md +101 -0
- package/docs/zh-CN/cli/voicecall.md +41 -0
- package/docs/zh-CN/cli/webhooks.md +32 -0
- package/docs/zh-CN/concepts/agent-loop.md +146 -0
- package/docs/zh-CN/concepts/agent-workspace.md +219 -0
- package/docs/zh-CN/concepts/agent.md +115 -0
- package/docs/zh-CN/concepts/architecture.md +123 -0
- package/docs/zh-CN/concepts/compaction.md +67 -0
- package/docs/zh-CN/concepts/context.md +168 -0
- package/docs/zh-CN/concepts/features.md +59 -0
- package/docs/zh-CN/concepts/markdown-formatting.md +117 -0
- package/docs/zh-CN/concepts/memory.md +412 -0
- package/docs/zh-CN/concepts/messages.md +141 -0
- package/docs/zh-CN/concepts/model-failover.md +145 -0
- package/docs/zh-CN/concepts/model-providers.md +606 -0
- package/docs/zh-CN/concepts/models.md +225 -0
- package/docs/zh-CN/concepts/multi-agent.md +372 -0
- package/docs/zh-CN/concepts/oauth.md +164 -0
- package/docs/zh-CN/concepts/presence.md +99 -0
- package/docs/zh-CN/concepts/queue.md +94 -0
- package/docs/zh-CN/concepts/retry.md +76 -0
- package/docs/zh-CN/concepts/session-pruning.md +129 -0
- package/docs/zh-CN/concepts/session-tool.md +200 -0
- package/docs/zh-CN/concepts/session.md +166 -0
- package/docs/zh-CN/concepts/streaming.md +133 -0
- package/docs/zh-CN/concepts/system-prompt.md +101 -0
- package/docs/zh-CN/concepts/timezone.md +96 -0
- package/docs/zh-CN/concepts/typebox.md +284 -0
- package/docs/zh-CN/concepts/typing-indicators.md +74 -0
- package/docs/zh-CN/concepts/usage-tracking.md +42 -0
- package/docs/zh-CN/date-time.md +129 -0
- package/docs/zh-CN/debug/node-issue.md +90 -0
- package/docs/zh-CN/diagnostics/flags.md +98 -0
- package/docs/zh-CN/gateway/authentication.md +184 -0
- package/docs/zh-CN/gateway/background-process.md +100 -0
- package/docs/zh-CN/gateway/bonjour.md +174 -0
- package/docs/zh-CN/gateway/bridge-protocol.md +86 -0
- package/docs/zh-CN/gateway/cli-backends.md +213 -0
- package/docs/zh-CN/gateway/configuration-examples.md +587 -0
- package/docs/zh-CN/gateway/configuration-reference.md +3103 -0
- package/docs/zh-CN/gateway/configuration.md +640 -0
- package/docs/zh-CN/gateway/discovery.md +123 -0
- package/docs/zh-CN/gateway/doctor.md +238 -0
- package/docs/zh-CN/gateway/gateway-lock.md +41 -0
- package/docs/zh-CN/gateway/health.md +42 -0
- package/docs/zh-CN/gateway/heartbeat.md +274 -0
- package/docs/zh-CN/gateway/index.md +335 -0
- package/docs/zh-CN/gateway/local-models.md +159 -0
- package/docs/zh-CN/gateway/logging.md +114 -0
- package/docs/zh-CN/gateway/multiple-gateways.md +119 -0
- package/docs/zh-CN/gateway/network-model.md +23 -0
- package/docs/zh-CN/gateway/openai-http-api.md +125 -0
- package/docs/zh-CN/gateway/openresponses-http-api.md +317 -0
- package/docs/zh-CN/gateway/pairing.md +99 -0
- package/docs/zh-CN/gateway/protocol.md +220 -0
- package/docs/zh-CN/gateway/remote-gateway-readme.md +164 -0
- package/docs/zh-CN/gateway/remote.md +133 -0
- package/docs/zh-CN/gateway/sandbox-vs-tool-policy-vs-elevated.md +135 -0
- package/docs/zh-CN/gateway/sandboxing.md +188 -0
- package/docs/zh-CN/gateway/security/index.md +777 -0
- package/docs/zh-CN/gateway/tailscale.md +124 -0
- package/docs/zh-CN/gateway/tools-invoke-http-api.md +92 -0
- package/docs/zh-CN/gateway/troubleshooting.md +771 -0
- package/docs/zh-CN/help/debugging.md +160 -0
- package/docs/zh-CN/help/environment.md +88 -0
- package/docs/zh-CN/help/faq.md +2640 -0
- package/docs/zh-CN/help/index.md +28 -0
- package/docs/zh-CN/help/scripts.md +35 -0
- package/docs/zh-CN/help/testing.md +375 -0
- package/docs/zh-CN/help/troubleshooting.md +104 -0
- package/docs/zh-CN/index.md +186 -0
- package/docs/zh-CN/install/ansible.md +215 -0
- package/docs/zh-CN/install/bun.md +65 -0
- package/docs/zh-CN/install/development-channels.md +81 -0
- package/docs/zh-CN/install/docker.md +532 -0
- package/docs/zh-CN/install/exe-dev.md +133 -0
- package/docs/zh-CN/install/fly.md +490 -0
- package/docs/zh-CN/install/gcp.md +510 -0
- package/docs/zh-CN/install/hetzner.md +337 -0
- package/docs/zh-CN/install/index.md +235 -0
- package/docs/zh-CN/install/installer.md +422 -0
- package/docs/zh-CN/install/macos-vm.md +288 -0
- package/docs/zh-CN/install/migrating.md +199 -0
- package/docs/zh-CN/install/nix.md +99 -0
- package/docs/zh-CN/install/node.md +8 -0
- package/docs/zh-CN/install/northflank.mdx +60 -0
- package/docs/zh-CN/install/railway.mdx +106 -0
- package/docs/zh-CN/install/render.mdx +169 -0
- package/docs/zh-CN/install/uninstall.md +135 -0
- package/docs/zh-CN/install/updating.md +233 -0
- package/docs/zh-CN/logging.md +329 -0
- package/docs/zh-CN/network.md +59 -0
- package/docs/zh-CN/nodes/audio.md +120 -0
- package/docs/zh-CN/nodes/camera.md +162 -0
- package/docs/zh-CN/nodes/images.md +79 -0
- package/docs/zh-CN/nodes/index.md +348 -0
- package/docs/zh-CN/nodes/location-command.md +120 -0
- package/docs/zh-CN/nodes/media-understanding.md +380 -0
- package/docs/zh-CN/nodes/talk.md +97 -0
- package/docs/zh-CN/nodes/troubleshooting.md +8 -0
- package/docs/zh-CN/nodes/voicewake.md +72 -0
- package/docs/zh-CN/perplexity.md +102 -0
- package/docs/zh-CN/pi-dev.md +77 -0
- package/docs/zh-CN/pi.md +619 -0
- package/docs/zh-CN/platforms/android.md +155 -0
- package/docs/zh-CN/platforms/digitalocean.md +273 -0
- package/docs/zh-CN/platforms/index.md +60 -0
- package/docs/zh-CN/platforms/ios.md +114 -0
- package/docs/zh-CN/platforms/linux.md +100 -0
- package/docs/zh-CN/platforms/mac/bundled-gateway.md +75 -0
- package/docs/zh-CN/platforms/mac/canvas.md +128 -0
- package/docs/zh-CN/platforms/mac/child-process.md +73 -0
- package/docs/zh-CN/platforms/mac/dev-setup.md +109 -0
- package/docs/zh-CN/platforms/mac/health.md +41 -0
- package/docs/zh-CN/platforms/mac/icon.md +38 -0
- package/docs/zh-CN/platforms/mac/logging.md +64 -0
- package/docs/zh-CN/platforms/mac/menu-bar.md +88 -0
- package/docs/zh-CN/platforms/mac/peekaboo.md +62 -0
- package/docs/zh-CN/platforms/mac/permissions.md +46 -0
- package/docs/zh-CN/platforms/mac/remote.md +90 -0
- package/docs/zh-CN/platforms/mac/signing.md +54 -0
- package/docs/zh-CN/platforms/mac/skills.md +40 -0
- package/docs/zh-CN/platforms/mac/voice-overlay.md +67 -0
- package/docs/zh-CN/platforms/mac/voicewake.md +74 -0
- package/docs/zh-CN/platforms/mac/webchat.md +43 -0
- package/docs/zh-CN/platforms/mac/xpc.md +68 -0
- package/docs/zh-CN/platforms/macos.md +193 -0
- package/docs/zh-CN/platforms/oracle.md +310 -0
- package/docs/zh-CN/platforms/raspberry-pi.md +416 -0
- package/docs/zh-CN/platforms/windows.md +247 -0
- package/docs/zh-CN/plugins/agent-tools.md +99 -0
- package/docs/zh-CN/plugins/manifest.md +68 -0
- package/docs/zh-CN/plugins/voice-call.md +250 -0
- package/docs/zh-CN/plugins/zalouser.md +88 -0
- package/docs/zh-CN/prose.md +141 -0
- package/docs/zh-CN/providers/anthropic.md +265 -0
- package/docs/zh-CN/providers/bedrock.md +170 -0
- package/docs/zh-CN/providers/claude-max-api-proxy.md +155 -0
- package/docs/zh-CN/providers/cloudflare-ai-gateway.md +78 -0
- package/docs/zh-CN/providers/deepgram.md +97 -0
- package/docs/zh-CN/providers/github-copilot.md +67 -0
- package/docs/zh-CN/providers/glm.md +50 -0
- package/docs/zh-CN/providers/huggingface.md +216 -0
- package/docs/zh-CN/providers/index.md +69 -0
- package/docs/zh-CN/providers/kilocode.md +80 -0
- package/docs/zh-CN/providers/litellm.md +160 -0
- package/docs/zh-CN/providers/minimax.md +222 -0
- package/docs/zh-CN/providers/mistral.md +61 -0
- package/docs/zh-CN/providers/models.md +51 -0
- package/docs/zh-CN/providers/moonshot.md +182 -0
- package/docs/zh-CN/providers/nvidia.md +62 -0
- package/docs/zh-CN/providers/ollama.md +359 -0
- package/docs/zh-CN/providers/openai.md +308 -0
- package/docs/zh-CN/providers/opencode-go.md +52 -0
- package/docs/zh-CN/providers/opencode.md +71 -0
- package/docs/zh-CN/providers/openrouter.md +44 -0
- package/docs/zh-CN/providers/qianfan.md +45 -0
- package/docs/zh-CN/providers/qwen.md +55 -0
- package/docs/zh-CN/providers/sglang.md +111 -0
- package/docs/zh-CN/providers/synthetic.md +106 -0
- package/docs/zh-CN/providers/together.md +72 -0
- package/docs/zh-CN/providers/venice.md +289 -0
- package/docs/zh-CN/providers/vercel-ai-gateway.md +66 -0
- package/docs/zh-CN/providers/xiaomi.md +93 -0
- package/docs/zh-CN/providers/zai.md +53 -0
- package/docs/zh-CN/reference/AGENTS.default.md +131 -0
- package/docs/zh-CN/reference/RELEASING.md +48 -0
- package/docs/zh-CN/reference/api-usage-costs.md +141 -0
- package/docs/zh-CN/reference/credits.md +34 -0
- package/docs/zh-CN/reference/device-models.md +54 -0
- package/docs/zh-CN/reference/rpc.md +48 -0
- package/docs/zh-CN/reference/session-management-compaction.md +287 -0
- package/docs/zh-CN/reference/templates/AGENTS.dev.md +89 -0
- package/docs/zh-CN/reference/templates/AGENTS.md +225 -0
- package/docs/zh-CN/reference/templates/BOOT.md +17 -0
- package/docs/zh-CN/reference/templates/BOOTSTRAP.md +68 -0
- package/docs/zh-CN/reference/templates/HEARTBEAT.md +18 -0
- package/docs/zh-CN/reference/templates/IDENTITY.dev.md +54 -0
- package/docs/zh-CN/reference/templates/IDENTITY.md +36 -0
- package/docs/zh-CN/reference/templates/SOUL.dev.md +83 -0
- package/docs/zh-CN/reference/templates/SOUL.md +49 -0
- package/docs/zh-CN/reference/templates/TOOLS.dev.md +31 -0
- package/docs/zh-CN/reference/templates/TOOLS.md +53 -0
- package/docs/zh-CN/reference/templates/USER.dev.md +25 -0
- package/docs/zh-CN/reference/templates/USER.md +30 -0
- package/docs/zh-CN/reference/test.md +57 -0
- package/docs/zh-CN/reference/token-use.md +119 -0
- package/docs/zh-CN/reference/transcript-hygiene.md +109 -0
- package/docs/zh-CN/reference/wizard.md +242 -0
- package/docs/zh-CN/security/formal-verification.md +171 -0
- package/docs/zh-CN/start/bootstrapping.md +9 -0
- package/docs/zh-CN/start/docs-directory.md +70 -0
- package/docs/zh-CN/start/getting-started.md +143 -0
- package/docs/zh-CN/start/hubs.md +194 -0
- package/docs/zh-CN/start/lore.md +226 -0
- package/docs/zh-CN/start/onboarding-overview.md +58 -0
- package/docs/zh-CN/start/onboarding.md +105 -0
- package/docs/zh-CN/start/openclaw.md +248 -0
- package/docs/zh-CN/start/quickstart.md +88 -0
- package/docs/zh-CN/start/setup.md +153 -0
- package/docs/zh-CN/start/showcase.md +423 -0
- package/docs/zh-CN/start/wizard-cli-automation.md +222 -0
- package/docs/zh-CN/start/wizard-cli-reference.md +306 -0
- package/docs/zh-CN/start/wizard.md +132 -0
- package/docs/zh-CN/tools/agent-send.md +59 -0
- package/docs/zh-CN/tools/apply-patch.md +57 -0
- package/docs/zh-CN/tools/browser-linux-troubleshooting.md +144 -0
- package/docs/zh-CN/tools/browser-login.md +75 -0
- package/docs/zh-CN/tools/browser.md +553 -0
- package/docs/zh-CN/tools/chrome-extension.md +183 -0
- package/docs/zh-CN/tools/clawhub.md +209 -0
- package/docs/zh-CN/tools/creating-skills.md +61 -0
- package/docs/zh-CN/tools/elevated.md +64 -0
- package/docs/zh-CN/tools/exec-approvals.md +234 -0
- package/docs/zh-CN/tools/exec.md +169 -0
- package/docs/zh-CN/tools/firecrawl.md +68 -0
- package/docs/zh-CN/tools/index.md +515 -0
- package/docs/zh-CN/tools/llm-task.md +117 -0
- package/docs/zh-CN/tools/lobster.md +349 -0
- package/docs/zh-CN/tools/multi-agent-sandbox-tools.md +401 -0
- package/docs/zh-CN/tools/plugin.md +1612 -0
- package/docs/zh-CN/tools/reactions.md +29 -0
- package/docs/zh-CN/tools/skills-config.md +78 -0
- package/docs/zh-CN/tools/skills.md +279 -0
- package/docs/zh-CN/tools/slash-commands.md +205 -0
- package/docs/zh-CN/tools/subagents.md +167 -0
- package/docs/zh-CN/tools/thinking.md +80 -0
- package/docs/zh-CN/tools/web.md +289 -0
- package/docs/zh-CN/tts.md +375 -0
- package/docs/zh-CN/vps.md +47 -0
- package/docs/zh-CN/web/control-ui.md +191 -0
- package/docs/zh-CN/web/dashboard.md +53 -0
- package/docs/zh-CN/web/index.md +118 -0
- package/docs/zh-CN/web/tui.md +166 -0
- package/docs/zh-CN/web/webchat.md +56 -0
- package/package.json +841 -0
- package/quantumclaw.mjs +135 -0
- package/skills/1password/SKILL.md +70 -0
- package/skills/1password/references/cli-examples.md +29 -0
- package/skills/1password/references/get-started.md +17 -0
- package/skills/apple-notes/SKILL.md +77 -0
- package/skills/apple-reminders/SKILL.md +118 -0
- package/skills/bear-notes/SKILL.md +107 -0
- package/skills/blogwatcher/SKILL.md +69 -0
- package/skills/blucli/SKILL.md +47 -0
- package/skills/bluebubbles/SKILL.md +131 -0
- package/skills/camsnap/SKILL.md +45 -0
- package/skills/canvas/SKILL.md +198 -0
- package/skills/clawhub/SKILL.md +77 -0
- package/skills/coding-agent/SKILL.md +295 -0
- package/skills/discord/SKILL.md +197 -0
- package/skills/eightctl/SKILL.md +50 -0
- package/skills/gemini/SKILL.md +43 -0
- package/skills/gh-issues/SKILL.md +865 -0
- package/skills/gifgrep/SKILL.md +79 -0
- package/skills/github/SKILL.md +163 -0
- package/skills/gog/SKILL.md +116 -0
- package/skills/goplaces/SKILL.md +52 -0
- package/skills/healthcheck/SKILL.md +245 -0
- package/skills/himalaya/SKILL.md +257 -0
- package/skills/himalaya/references/configuration.md +184 -0
- package/skills/himalaya/references/message-composition.md +199 -0
- package/skills/imsg/SKILL.md +122 -0
- package/skills/mcporter/SKILL.md +61 -0
- package/skills/model-usage/SKILL.md +69 -0
- package/skills/model-usage/references/codexbar-cli.md +33 -0
- package/skills/model-usage/scripts/model_usage.py +320 -0
- package/skills/model-usage/scripts/test_model_usage.py +40 -0
- package/skills/nano-pdf/SKILL.md +38 -0
- package/skills/node-connect/SKILL.md +142 -0
- package/skills/notion/SKILL.md +174 -0
- package/skills/obsidian/SKILL.md +81 -0
- package/skills/openai-image-gen/SKILL.md +92 -0
- package/skills/openai-image-gen/scripts/gen.py +328 -0
- package/skills/openai-image-gen/scripts/test_gen.py +140 -0
- package/skills/openai-whisper/SKILL.md +38 -0
- package/skills/openai-whisper-api/SKILL.md +52 -0
- package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
- package/skills/openhue/SKILL.md +112 -0
- package/skills/oracle/SKILL.md +125 -0
- package/skills/ordercli/SKILL.md +78 -0
- package/skills/peekaboo/SKILL.md +190 -0
- package/skills/sag/SKILL.md +87 -0
- package/skills/session-logs/SKILL.md +115 -0
- package/skills/sherpa-onnx-tts/SKILL.md +103 -0
- package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
- package/skills/skill-creator/SKILL.md +372 -0
- package/skills/skill-creator/license.txt +202 -0
- package/skills/skill-creator/scripts/init_skill.py +378 -0
- package/skills/skill-creator/scripts/package_skill.py +139 -0
- package/skills/skill-creator/scripts/quick_validate.py +159 -0
- package/skills/skill-creator/scripts/test_package_skill.py +160 -0
- package/skills/skill-creator/scripts/test_quick_validate.py +72 -0
- package/skills/slack/SKILL.md +144 -0
- package/skills/songsee/SKILL.md +49 -0
- package/skills/sonoscli/SKILL.md +65 -0
- package/skills/spotify-player/SKILL.md +64 -0
- package/skills/summarize/SKILL.md +87 -0
- package/skills/things-mac/SKILL.md +86 -0
- package/skills/tmux/SKILL.md +153 -0
- package/skills/tmux/scripts/find-sessions.sh +112 -0
- package/skills/tmux/scripts/wait-for-text.sh +83 -0
- package/skills/trello/SKILL.md +95 -0
- package/skills/video-frames/SKILL.md +46 -0
- package/skills/video-frames/scripts/frame.sh +81 -0
- package/skills/voice-call/SKILL.md +45 -0
- package/skills/wacli/SKILL.md +72 -0
- package/skills/weather/SKILL.md +112 -0
- package/skills/xurl/SKILL.md +461 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Sandbox vs Tool Policy vs Elevated
|
|
3
|
+
summary: "Why a tool is blocked: sandbox runtime, tool allow/deny policy, and elevated exec gates"
|
|
4
|
+
read_when: "You hit 'sandbox jail' or see a tool/elevated refusal and want the exact config key to change."
|
|
5
|
+
status: active
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Sandbox vs Tool Policy vs Elevated
|
|
9
|
+
|
|
10
|
+
QuantumClaw has three related (but different) controls:
|
|
11
|
+
|
|
12
|
+
1. **Sandbox** (`agents.defaults.sandbox.*` / `agents.list[].sandbox.*`) decides **where tools run** (Docker vs host).
|
|
13
|
+
2. **Tool policy** (`tools.*`, `tools.sandbox.tools.*`, `agents.list[].tools.*`) decides **which tools are available/allowed**.
|
|
14
|
+
3. **Elevated** (`tools.elevated.*`, `agents.list[].tools.elevated.*`) is an **exec-only escape hatch** to run on the host when you’re sandboxed.
|
|
15
|
+
|
|
16
|
+
## Quick debug
|
|
17
|
+
|
|
18
|
+
Use the inspector to see what QuantumClaw is _actually_ doing:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
quantumclaw sandbox explain
|
|
22
|
+
quantumclaw sandbox explain --session agent:main:main
|
|
23
|
+
quantumclaw sandbox explain --agent work
|
|
24
|
+
quantumclaw sandbox explain --json
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
It prints:
|
|
28
|
+
|
|
29
|
+
- effective sandbox mode/scope/workspace access
|
|
30
|
+
- whether the session is currently sandboxed (main vs non-main)
|
|
31
|
+
- effective sandbox tool allow/deny (and whether it came from agent/global/default)
|
|
32
|
+
- elevated gates and fix-it key paths
|
|
33
|
+
|
|
34
|
+
## Sandbox: where tools run
|
|
35
|
+
|
|
36
|
+
Sandboxing is controlled by `agents.defaults.sandbox.mode`:
|
|
37
|
+
|
|
38
|
+
- `"off"`: everything runs on the host.
|
|
39
|
+
- `"non-main"`: only non-main sessions are sandboxed (common “surprise” for groups/channels).
|
|
40
|
+
- `"all"`: everything is sandboxed.
|
|
41
|
+
|
|
42
|
+
See [Sandboxing](/gateway/sandboxing) for the full matrix (scope, workspace mounts, images).
|
|
43
|
+
|
|
44
|
+
### Bind mounts (security quick check)
|
|
45
|
+
|
|
46
|
+
- `docker.binds` _pierces_ the sandbox filesystem: whatever you mount is visible inside the container with the mode you set (`:ro` or `:rw`).
|
|
47
|
+
- Default is read-write if you omit the mode; prefer `:ro` for source/secrets.
|
|
48
|
+
- `scope: "shared"` ignores per-agent binds (only global binds apply).
|
|
49
|
+
- Binding `/var/run/docker.sock` effectively hands host control to the sandbox; only do this intentionally.
|
|
50
|
+
- Workspace access (`workspaceAccess: "ro"`/`"rw"`) is independent of bind modes.
|
|
51
|
+
|
|
52
|
+
## Tool policy: which tools exist/are callable
|
|
53
|
+
|
|
54
|
+
Two layers matter:
|
|
55
|
+
|
|
56
|
+
- **Tool profile**: `tools.profile` and `agents.list[].tools.profile` (base allowlist)
|
|
57
|
+
- **Provider tool profile**: `tools.byProvider[provider].profile` and `agents.list[].tools.byProvider[provider].profile`
|
|
58
|
+
- **Global/per-agent tool policy**: `tools.allow`/`tools.deny` and `agents.list[].tools.allow`/`agents.list[].tools.deny`
|
|
59
|
+
- **Provider tool policy**: `tools.byProvider[provider].allow/deny` and `agents.list[].tools.byProvider[provider].allow/deny`
|
|
60
|
+
- **Sandbox tool policy** (only applies when sandboxed): `tools.sandbox.tools.allow`/`tools.sandbox.tools.deny` and `agents.list[].tools.sandbox.tools.*`
|
|
61
|
+
|
|
62
|
+
Rules of thumb:
|
|
63
|
+
|
|
64
|
+
- `deny` always wins.
|
|
65
|
+
- If `allow` is non-empty, everything else is treated as blocked.
|
|
66
|
+
- Tool policy is the hard stop: `/exec` cannot override a denied `exec` tool.
|
|
67
|
+
- `/exec` only changes session defaults for authorized senders; it does not grant tool access.
|
|
68
|
+
Provider tool keys accept either `provider` (e.g. `google-antigravity`) or `provider/model` (e.g. `openai/gpt-5.2`).
|
|
69
|
+
|
|
70
|
+
### Tool groups (shorthands)
|
|
71
|
+
|
|
72
|
+
Tool policies (global, agent, sandbox) support `group:*` entries that expand to multiple tools:
|
|
73
|
+
|
|
74
|
+
```json5
|
|
75
|
+
{
|
|
76
|
+
tools: {
|
|
77
|
+
sandbox: {
|
|
78
|
+
tools: {
|
|
79
|
+
allow: ["group:runtime", "group:fs", "group:sessions", "group:memory"],
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Available groups:
|
|
87
|
+
|
|
88
|
+
- `group:runtime`: `exec`, `bash`, `process`
|
|
89
|
+
- `group:fs`: `read`, `write`, `edit`, `apply_patch`
|
|
90
|
+
- `group:sessions`: `sessions_list`, `sessions_history`, `sessions_send`, `sessions_spawn`, `session_status`
|
|
91
|
+
- `group:memory`: `memory_search`, `memory_get`
|
|
92
|
+
- `group:ui`: `browser`, `canvas`
|
|
93
|
+
- `group:automation`: `cron`, `gateway`
|
|
94
|
+
- `group:messaging`: `message`
|
|
95
|
+
- `group:nodes`: `nodes`
|
|
96
|
+
- `group:quantumclaw`: all built-in QuantumClaw tools (excludes provider plugins)
|
|
97
|
+
|
|
98
|
+
## Elevated: exec-only "run on host"
|
|
99
|
+
|
|
100
|
+
Elevated does **not** grant extra tools; it only affects `exec`.
|
|
101
|
+
|
|
102
|
+
- If you’re sandboxed, `/elevated on` (or `exec` with `elevated: true`) runs on the host (approvals may still apply).
|
|
103
|
+
- Use `/elevated full` to skip exec approvals for the session.
|
|
104
|
+
- If you’re already running direct, elevated is effectively a no-op (still gated).
|
|
105
|
+
- Elevated is **not** skill-scoped and does **not** override tool allow/deny.
|
|
106
|
+
- `/exec` is separate from elevated. It only adjusts per-session exec defaults for authorized senders.
|
|
107
|
+
|
|
108
|
+
Gates:
|
|
109
|
+
|
|
110
|
+
- Enablement: `tools.elevated.enabled` (and optionally `agents.list[].tools.elevated.enabled`)
|
|
111
|
+
- Sender allowlists: `tools.elevated.allowFrom.<provider>` (and optionally `agents.list[].tools.elevated.allowFrom.<provider>`)
|
|
112
|
+
|
|
113
|
+
See [Elevated Mode](/tools/elevated).
|
|
114
|
+
|
|
115
|
+
## Common "sandbox jail" fixes
|
|
116
|
+
|
|
117
|
+
### "Tool X blocked by sandbox tool policy"
|
|
118
|
+
|
|
119
|
+
Fix-it keys (pick one):
|
|
120
|
+
|
|
121
|
+
- Disable sandbox: `agents.defaults.sandbox.mode=off` (or per-agent `agents.list[].sandbox.mode=off`)
|
|
122
|
+
- Allow the tool inside sandbox:
|
|
123
|
+
- remove it from `tools.sandbox.tools.deny` (or per-agent `agents.list[].tools.sandbox.tools.deny`)
|
|
124
|
+
- or add it to `tools.sandbox.tools.allow` (or per-agent allow)
|
|
125
|
+
|
|
126
|
+
### "I thought this was main, why is it sandboxed?"
|
|
127
|
+
|
|
128
|
+
In `"non-main"` mode, group/channel keys are _not_ main. Use the main session key (shown by `sandbox explain`) or switch mode to `"off"`.
|
|
129
|
+
|
|
130
|
+
## See also
|
|
131
|
+
|
|
132
|
+
- [Sandboxing](/gateway/sandboxing) -- full sandbox reference (modes, scopes, backends, images)
|
|
133
|
+
- [Multi-Agent Sandbox & Tools](/tools/multi-agent-sandbox-tools) -- per-agent overrides and precedence
|
|
134
|
+
- [Elevated Mode](/tools/elevated)
|
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "How QuantumClaw sandboxing works: modes, scopes, workspace access, and images"
|
|
3
|
+
title: Sandboxing
|
|
4
|
+
read_when: "You want a dedicated explanation of sandboxing or need to tune agents.defaults.sandbox."
|
|
5
|
+
status: active
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Sandboxing
|
|
9
|
+
|
|
10
|
+
QuantumClaw can run **tools inside sandbox backends** to reduce blast radius.
|
|
11
|
+
This is **optional** and controlled by configuration (`agents.defaults.sandbox` or
|
|
12
|
+
`agents.list[].sandbox`). If sandboxing is off, tools run on the host.
|
|
13
|
+
The Gateway stays on the host; tool execution runs in an isolated sandbox
|
|
14
|
+
when enabled.
|
|
15
|
+
|
|
16
|
+
This is not a perfect security boundary, but it materially limits filesystem
|
|
17
|
+
and process access when the model does something dumb.
|
|
18
|
+
|
|
19
|
+
## What gets sandboxed
|
|
20
|
+
|
|
21
|
+
- Tool execution (`exec`, `read`, `write`, `edit`, `apply_patch`, `process`, etc.).
|
|
22
|
+
- Optional sandboxed browser (`agents.defaults.sandbox.browser`).
|
|
23
|
+
- By default, the sandbox browser auto-starts (ensures CDP is reachable) when the browser tool needs it.
|
|
24
|
+
Configure via `agents.defaults.sandbox.browser.autoStart` and `agents.defaults.sandbox.browser.autoStartTimeoutMs`.
|
|
25
|
+
- By default, sandbox browser containers use a dedicated Docker network (`quantumclaw-sandbox-browser`) instead of the global `bridge` network.
|
|
26
|
+
Configure with `agents.defaults.sandbox.browser.network`.
|
|
27
|
+
- Optional `agents.defaults.sandbox.browser.cdpSourceRange` restricts container-edge CDP ingress with a CIDR allowlist (for example `172.21.0.1/32`).
|
|
28
|
+
- noVNC observer access is password-protected by default; QuantumClaw emits a short-lived token URL that serves a local bootstrap page and opens noVNC with password in URL fragment (not query/header logs).
|
|
29
|
+
- `agents.defaults.sandbox.browser.allowHostControl` lets sandboxed sessions target the host browser explicitly.
|
|
30
|
+
- Optional allowlists gate `target: "custom"`: `allowedControlUrls`, `allowedControlHosts`, `allowedControlPorts`.
|
|
31
|
+
|
|
32
|
+
Not sandboxed:
|
|
33
|
+
|
|
34
|
+
- The Gateway process itself.
|
|
35
|
+
- Any tool explicitly allowed to run on the host (e.g. `tools.elevated`).
|
|
36
|
+
- **Elevated exec runs on the host and bypasses sandboxing.**
|
|
37
|
+
- If sandboxing is off, `tools.elevated` does not change execution (already on host). See [Elevated Mode](/tools/elevated).
|
|
38
|
+
|
|
39
|
+
## Modes
|
|
40
|
+
|
|
41
|
+
`agents.defaults.sandbox.mode` controls **when** sandboxing is used:
|
|
42
|
+
|
|
43
|
+
- `"off"`: no sandboxing.
|
|
44
|
+
- `"non-main"`: sandbox only **non-main** sessions (default if you want normal chats on host).
|
|
45
|
+
- `"all"`: every session runs in a sandbox.
|
|
46
|
+
Note: `"non-main"` is based on `session.mainKey` (default `"main"`), not agent id.
|
|
47
|
+
Group/channel sessions use their own keys, so they count as non-main and will be sandboxed.
|
|
48
|
+
|
|
49
|
+
## Scope
|
|
50
|
+
|
|
51
|
+
`agents.defaults.sandbox.scope` controls **how many containers** are created:
|
|
52
|
+
|
|
53
|
+
- `"session"` (default): one container per session.
|
|
54
|
+
- `"agent"`: one container per agent.
|
|
55
|
+
- `"shared"`: one container shared by all sandboxed sessions.
|
|
56
|
+
|
|
57
|
+
## Backend
|
|
58
|
+
|
|
59
|
+
`agents.defaults.sandbox.backend` controls **which runtime** provides the sandbox:
|
|
60
|
+
|
|
61
|
+
- `"docker"` (default): local Docker-backed sandbox runtime.
|
|
62
|
+
- `"ssh"`: generic SSH-backed remote sandbox runtime.
|
|
63
|
+
- `"openshell"`: OpenShell-backed sandbox runtime.
|
|
64
|
+
|
|
65
|
+
SSH-specific config lives under `agents.defaults.sandbox.ssh`.
|
|
66
|
+
OpenShell-specific config lives under `plugins.entries.openshell.config`.
|
|
67
|
+
|
|
68
|
+
### Choosing a backend
|
|
69
|
+
|
|
70
|
+
| | Docker | SSH | OpenShell |
|
|
71
|
+
| ------------------- | -------------------------------- | ------------------------------ | --------------------------------------------------- |
|
|
72
|
+
| **Where it runs** | Local container | Any SSH-accessible host | OpenShell managed sandbox |
|
|
73
|
+
| **Setup** | `scripts/sandbox-setup.sh` | SSH key + target host | OpenShell plugin enabled |
|
|
74
|
+
| **Workspace model** | Bind-mount or copy | Remote-canonical (seed once) | `mirror` or `remote` |
|
|
75
|
+
| **Network control** | `docker.network` (default: none) | Depends on remote host | Depends on OpenShell |
|
|
76
|
+
| **Browser sandbox** | Supported | Not supported | Not supported yet |
|
|
77
|
+
| **Bind mounts** | `docker.binds` | N/A | N/A |
|
|
78
|
+
| **Best for** | Local dev, full isolation | Offloading to a remote machine | Managed remote sandboxes with optional two-way sync |
|
|
79
|
+
|
|
80
|
+
### SSH backend
|
|
81
|
+
|
|
82
|
+
Use `backend: "ssh"` when you want QuantumClaw to sandbox `exec`, file tools, and media reads on
|
|
83
|
+
an arbitrary SSH-accessible machine.
|
|
84
|
+
|
|
85
|
+
```json5
|
|
86
|
+
{
|
|
87
|
+
agents: {
|
|
88
|
+
defaults: {
|
|
89
|
+
sandbox: {
|
|
90
|
+
mode: "all",
|
|
91
|
+
backend: "ssh",
|
|
92
|
+
scope: "session",
|
|
93
|
+
workspaceAccess: "rw",
|
|
94
|
+
ssh: {
|
|
95
|
+
target: "user@gateway-host:22",
|
|
96
|
+
workspaceRoot: "/tmp/quantumclaw-sandboxes",
|
|
97
|
+
strictHostKeyChecking: true,
|
|
98
|
+
updateHostKeys: true,
|
|
99
|
+
identityFile: "~/.ssh/id_ed25519",
|
|
100
|
+
certificateFile: "~/.ssh/id_ed25519-cert.pub",
|
|
101
|
+
knownHostsFile: "~/.ssh/known_hosts",
|
|
102
|
+
// Or use SecretRefs / inline contents instead of local files:
|
|
103
|
+
// identityData: { source: "env", provider: "default", id: "SSH_IDENTITY" },
|
|
104
|
+
// certificateData: { source: "env", provider: "default", id: "SSH_CERTIFICATE" },
|
|
105
|
+
// knownHostsData: { source: "env", provider: "default", id: "SSH_KNOWN_HOSTS" },
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
How it works:
|
|
114
|
+
|
|
115
|
+
- QuantumClaw creates a per-scope remote root under `sandbox.ssh.workspaceRoot`.
|
|
116
|
+
- On first use after create or recreate, QuantumClaw seeds that remote workspace from the local workspace once.
|
|
117
|
+
- After that, `exec`, `read`, `write`, `edit`, `apply_patch`, prompt media reads, and inbound media staging run directly against the remote workspace over SSH.
|
|
118
|
+
- QuantumClaw does not sync remote changes back to the local workspace automatically.
|
|
119
|
+
|
|
120
|
+
Authentication material:
|
|
121
|
+
|
|
122
|
+
- `identityFile`, `certificateFile`, `knownHostsFile`: use existing local files and pass them through OpenSSH config.
|
|
123
|
+
- `identityData`, `certificateData`, `knownHostsData`: use inline strings or SecretRefs. QuantumClaw resolves them through the normal secrets runtime snapshot, writes them to temp files with `0600`, and deletes them when the SSH session ends.
|
|
124
|
+
- If both `*File` and `*Data` are set for the same item, `*Data` wins for that SSH session.
|
|
125
|
+
|
|
126
|
+
This is a **remote-canonical** model. The remote SSH workspace becomes the real sandbox state after the initial seed.
|
|
127
|
+
|
|
128
|
+
Important consequences:
|
|
129
|
+
|
|
130
|
+
- Host-local edits made outside QuantumClaw after the seed step are not visible remotely until you recreate the sandbox.
|
|
131
|
+
- `quantumclaw sandbox recreate` deletes the per-scope remote root and seeds again from local on next use.
|
|
132
|
+
- Browser sandboxing is not supported on the SSH backend.
|
|
133
|
+
- `sandbox.docker.*` settings do not apply to the SSH backend.
|
|
134
|
+
|
|
135
|
+
### OpenShell backend
|
|
136
|
+
|
|
137
|
+
Use `backend: "openshell"` when you want QuantumClaw to sandbox tools in an
|
|
138
|
+
OpenShell-managed remote environment. For the full setup guide, configuration
|
|
139
|
+
reference, and workspace mode comparison, see the dedicated
|
|
140
|
+
[OpenShell page](/gateway/openshell).
|
|
141
|
+
|
|
142
|
+
OpenShell reuses the same core SSH transport and remote filesystem bridge as the
|
|
143
|
+
generic SSH backend, and adds OpenShell-specific lifecycle
|
|
144
|
+
(`sandbox create/get/delete`, `sandbox ssh-config`) plus the optional `mirror`
|
|
145
|
+
workspace mode.
|
|
146
|
+
|
|
147
|
+
```json5
|
|
148
|
+
{
|
|
149
|
+
agents: {
|
|
150
|
+
defaults: {
|
|
151
|
+
sandbox: {
|
|
152
|
+
mode: "all",
|
|
153
|
+
backend: "openshell",
|
|
154
|
+
scope: "session",
|
|
155
|
+
workspaceAccess: "rw",
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
plugins: {
|
|
160
|
+
entries: {
|
|
161
|
+
openshell: {
|
|
162
|
+
enabled: true,
|
|
163
|
+
config: {
|
|
164
|
+
from: "quantumclaw",
|
|
165
|
+
mode: "remote", // mirror | remote
|
|
166
|
+
remoteWorkspaceDir: "/sandbox",
|
|
167
|
+
remoteAgentWorkspaceDir: "/agent",
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
OpenShell modes:
|
|
176
|
+
|
|
177
|
+
- `mirror` (default): local workspace stays canonical. QuantumClaw syncs local files into OpenShell before exec and syncs the remote workspace back after exec.
|
|
178
|
+
- `remote`: OpenShell workspace is canonical after the sandbox is created. QuantumClaw seeds the remote workspace once from the local workspace, then file tools and exec run directly against the remote sandbox without syncing changes back.
|
|
179
|
+
|
|
180
|
+
Remote transport details:
|
|
181
|
+
|
|
182
|
+
- QuantumClaw asks OpenShell for sandbox-specific SSH config via `openshell sandbox ssh-config <name>`.
|
|
183
|
+
- Core writes that SSH config to a temp file, opens the SSH session, and reuses the same remote filesystem bridge used by `backend: "ssh"`.
|
|
184
|
+
- In `mirror` mode only the lifecycle differs: sync local to remote before exec, then sync back after exec.
|
|
185
|
+
|
|
186
|
+
Current OpenShell limitations:
|
|
187
|
+
|
|
188
|
+
- sandbox browser is not supported yet
|
|
189
|
+
- `sandbox.docker.binds` is not supported on the OpenShell backend
|
|
190
|
+
- Docker-specific runtime knobs under `sandbox.docker.*` still apply only to the Docker backend
|
|
191
|
+
|
|
192
|
+
#### Workspace modes
|
|
193
|
+
|
|
194
|
+
OpenShell has two workspace models. This is the part that matters most in practice.
|
|
195
|
+
|
|
196
|
+
##### `mirror`
|
|
197
|
+
|
|
198
|
+
Use `plugins.entries.openshell.config.mode: "mirror"` when you want the **local workspace to stay canonical**.
|
|
199
|
+
|
|
200
|
+
Behavior:
|
|
201
|
+
|
|
202
|
+
- Before `exec`, QuantumClaw syncs the local workspace into the OpenShell sandbox.
|
|
203
|
+
- After `exec`, QuantumClaw syncs the remote workspace back to the local workspace.
|
|
204
|
+
- File tools still operate through the sandbox bridge, but the local workspace remains the source of truth between turns.
|
|
205
|
+
|
|
206
|
+
Use this when:
|
|
207
|
+
|
|
208
|
+
- you edit files locally outside QuantumClaw and want those changes to show up in the sandbox automatically
|
|
209
|
+
- you want the OpenShell sandbox to behave as much like the Docker backend as possible
|
|
210
|
+
- you want the host workspace to reflect sandbox writes after each exec turn
|
|
211
|
+
|
|
212
|
+
Tradeoff:
|
|
213
|
+
|
|
214
|
+
- extra sync cost before and after exec
|
|
215
|
+
|
|
216
|
+
##### `remote`
|
|
217
|
+
|
|
218
|
+
Use `plugins.entries.openshell.config.mode: "remote"` when you want the **OpenShell workspace to become canonical**.
|
|
219
|
+
|
|
220
|
+
Behavior:
|
|
221
|
+
|
|
222
|
+
- When the sandbox is first created, QuantumClaw seeds the remote workspace from the local workspace once.
|
|
223
|
+
- After that, `exec`, `read`, `write`, `edit`, and `apply_patch` operate directly against the remote OpenShell workspace.
|
|
224
|
+
- QuantumClaw does **not** sync remote changes back into the local workspace after exec.
|
|
225
|
+
- Prompt-time media reads still work because file and media tools read through the sandbox bridge instead of assuming a local host path.
|
|
226
|
+
- Transport is SSH into the OpenShell sandbox returned by `openshell sandbox ssh-config`.
|
|
227
|
+
|
|
228
|
+
Important consequences:
|
|
229
|
+
|
|
230
|
+
- If you edit files on the host outside QuantumClaw after the seed step, the remote sandbox will **not** see those changes automatically.
|
|
231
|
+
- If the sandbox is recreated, the remote workspace is seeded from the local workspace again.
|
|
232
|
+
- With `scope: "agent"` or `scope: "shared"`, that remote workspace is shared at that same scope.
|
|
233
|
+
|
|
234
|
+
Use this when:
|
|
235
|
+
|
|
236
|
+
- the sandbox should live primarily on the remote OpenShell side
|
|
237
|
+
- you want lower per-turn sync overhead
|
|
238
|
+
- you do not want host-local edits to silently overwrite remote sandbox state
|
|
239
|
+
|
|
240
|
+
Choose `mirror` if you think of the sandbox as a temporary execution environment.
|
|
241
|
+
Choose `remote` if you think of the sandbox as the real workspace.
|
|
242
|
+
|
|
243
|
+
#### OpenShell lifecycle
|
|
244
|
+
|
|
245
|
+
OpenShell sandboxes are still managed through the normal sandbox lifecycle:
|
|
246
|
+
|
|
247
|
+
- `quantumclaw sandbox list` shows OpenShell runtimes as well as Docker runtimes
|
|
248
|
+
- `quantumclaw sandbox recreate` deletes the current runtime and lets QuantumClaw recreate it on next use
|
|
249
|
+
- prune logic is backend-aware too
|
|
250
|
+
|
|
251
|
+
For `remote` mode, recreate is especially important:
|
|
252
|
+
|
|
253
|
+
- recreate deletes the canonical remote workspace for that scope
|
|
254
|
+
- the next use seeds a fresh remote workspace from the local workspace
|
|
255
|
+
|
|
256
|
+
For `mirror` mode, recreate mainly resets the remote execution environment
|
|
257
|
+
because the local workspace remains canonical anyway.
|
|
258
|
+
|
|
259
|
+
## Workspace access
|
|
260
|
+
|
|
261
|
+
`agents.defaults.sandbox.workspaceAccess` controls **what the sandbox can see**:
|
|
262
|
+
|
|
263
|
+
- `"none"` (default): tools see a sandbox workspace under `~/.quantumclaw/sandboxes`.
|
|
264
|
+
- `"ro"`: mounts the agent workspace read-only at `/agent` (disables `write`/`edit`/`apply_patch`).
|
|
265
|
+
- `"rw"`: mounts the agent workspace read/write at `/workspace`.
|
|
266
|
+
|
|
267
|
+
With the OpenShell backend:
|
|
268
|
+
|
|
269
|
+
- `mirror` mode still uses the local workspace as the canonical source between exec turns
|
|
270
|
+
- `remote` mode uses the remote OpenShell workspace as the canonical source after the initial seed
|
|
271
|
+
- `workspaceAccess: "ro"` and `"none"` still restrict write behavior the same way
|
|
272
|
+
|
|
273
|
+
Inbound media is copied into the active sandbox workspace (`media/inbound/*`).
|
|
274
|
+
Skills note: the `read` tool is sandbox-rooted. With `workspaceAccess: "none"`,
|
|
275
|
+
QuantumClaw mirrors eligible skills into the sandbox workspace (`.../skills`) so
|
|
276
|
+
they can be read. With `"rw"`, workspace skills are readable from
|
|
277
|
+
`/workspace/skills`.
|
|
278
|
+
|
|
279
|
+
## Custom bind mounts
|
|
280
|
+
|
|
281
|
+
`agents.defaults.sandbox.docker.binds` mounts additional host directories into the container.
|
|
282
|
+
Format: `host:container:mode` (e.g., `"/home/user/source:/source:rw"`).
|
|
283
|
+
|
|
284
|
+
Global and per-agent binds are **merged** (not replaced). Under `scope: "shared"`, per-agent binds are ignored.
|
|
285
|
+
|
|
286
|
+
`agents.defaults.sandbox.browser.binds` mounts additional host directories into the **sandbox browser** container only.
|
|
287
|
+
|
|
288
|
+
- When set (including `[]`), it replaces `agents.defaults.sandbox.docker.binds` for the browser container.
|
|
289
|
+
- When omitted, the browser container falls back to `agents.defaults.sandbox.docker.binds` (backwards compatible).
|
|
290
|
+
|
|
291
|
+
Example (read-only source + an extra data directory):
|
|
292
|
+
|
|
293
|
+
```json5
|
|
294
|
+
{
|
|
295
|
+
agents: {
|
|
296
|
+
defaults: {
|
|
297
|
+
sandbox: {
|
|
298
|
+
docker: {
|
|
299
|
+
binds: ["/home/user/source:/source:ro", "/var/data/myapp:/data:ro"],
|
|
300
|
+
},
|
|
301
|
+
},
|
|
302
|
+
},
|
|
303
|
+
list: [
|
|
304
|
+
{
|
|
305
|
+
id: "build",
|
|
306
|
+
sandbox: {
|
|
307
|
+
docker: {
|
|
308
|
+
binds: ["/mnt/cache:/cache:rw"],
|
|
309
|
+
},
|
|
310
|
+
},
|
|
311
|
+
},
|
|
312
|
+
],
|
|
313
|
+
},
|
|
314
|
+
}
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
Security notes:
|
|
318
|
+
|
|
319
|
+
- Binds bypass the sandbox filesystem: they expose host paths with whatever mode you set (`:ro` or `:rw`).
|
|
320
|
+
- QuantumClaw blocks dangerous bind sources (for example: `docker.sock`, `/etc`, `/proc`, `/sys`, `/dev`, and parent mounts that would expose them).
|
|
321
|
+
- Sensitive mounts (secrets, SSH keys, service credentials) should be `:ro` unless absolutely required.
|
|
322
|
+
- Combine with `workspaceAccess: "ro"` if you only need read access to the workspace; bind modes stay independent.
|
|
323
|
+
- See [Sandbox vs Tool Policy vs Elevated](/gateway/sandbox-vs-tool-policy-vs-elevated) for how binds interact with tool policy and elevated exec.
|
|
324
|
+
|
|
325
|
+
## Images + setup
|
|
326
|
+
|
|
327
|
+
Default Docker image: `quantumclaw-sandbox:bookworm-slim`
|
|
328
|
+
|
|
329
|
+
Build it once:
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
scripts/sandbox-setup.sh
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
Note: the default image does **not** include Node. If a skill needs Node (or
|
|
336
|
+
other runtimes), either bake a custom image or install via
|
|
337
|
+
`sandbox.docker.setupCommand` (requires network egress + writable root +
|
|
338
|
+
root user).
|
|
339
|
+
|
|
340
|
+
If you want a more functional sandbox image with common tooling (for example
|
|
341
|
+
`curl`, `jq`, `nodejs`, `python3`, `git`), build:
|
|
342
|
+
|
|
343
|
+
```bash
|
|
344
|
+
scripts/sandbox-common-setup.sh
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
Then set `agents.defaults.sandbox.docker.image` to
|
|
348
|
+
`quantumclaw-sandbox-common:bookworm-slim`.
|
|
349
|
+
|
|
350
|
+
Sandboxed browser image:
|
|
351
|
+
|
|
352
|
+
```bash
|
|
353
|
+
scripts/sandbox-browser-setup.sh
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
By default, Docker sandbox containers run with **no network**.
|
|
357
|
+
Override with `agents.defaults.sandbox.docker.network`.
|
|
358
|
+
|
|
359
|
+
The bundled sandbox browser image also applies conservative Chromium startup defaults
|
|
360
|
+
for containerized workloads. Current container defaults include:
|
|
361
|
+
|
|
362
|
+
- `--remote-debugging-address=127.0.0.1`
|
|
363
|
+
- `--remote-debugging-port=<derived from QUANTUMCLAW_BROWSER_CDP_PORT>`
|
|
364
|
+
- `--user-data-dir=${HOME}/.chrome`
|
|
365
|
+
- `--no-first-run`
|
|
366
|
+
- `--no-default-browser-check`
|
|
367
|
+
- `--disable-3d-apis`
|
|
368
|
+
- `--disable-gpu`
|
|
369
|
+
- `--disable-dev-shm-usage`
|
|
370
|
+
- `--disable-background-networking`
|
|
371
|
+
- `--disable-extensions`
|
|
372
|
+
- `--disable-features=TranslateUI`
|
|
373
|
+
- `--disable-breakpad`
|
|
374
|
+
- `--disable-crash-reporter`
|
|
375
|
+
- `--disable-software-rasterizer`
|
|
376
|
+
- `--no-zygote`
|
|
377
|
+
- `--metrics-recording-only`
|
|
378
|
+
- `--renderer-process-limit=2`
|
|
379
|
+
- `--no-sandbox` and `--disable-setuid-sandbox` when `noSandbox` is enabled.
|
|
380
|
+
- The three graphics hardening flags (`--disable-3d-apis`,
|
|
381
|
+
`--disable-software-rasterizer`, `--disable-gpu`) are optional and are useful
|
|
382
|
+
when containers lack GPU support. Set `QUANTUMCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0`
|
|
383
|
+
if your workload requires WebGL or other 3D/browser features.
|
|
384
|
+
- `--disable-extensions` is enabled by default and can be disabled with
|
|
385
|
+
`QUANTUMCLAW_BROWSER_DISABLE_EXTENSIONS=0` for extension-reliant flows.
|
|
386
|
+
- `--renderer-process-limit=2` is controlled by
|
|
387
|
+
`QUANTUMCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>`, where `0` keeps Chromium's default.
|
|
388
|
+
|
|
389
|
+
If you need a different runtime profile, use a custom browser image and provide
|
|
390
|
+
your own entrypoint. For local (non-container) Chromium profiles, use
|
|
391
|
+
`browser.extraArgs` to append additional startup flags.
|
|
392
|
+
|
|
393
|
+
Security defaults:
|
|
394
|
+
|
|
395
|
+
- `network: "host"` is blocked.
|
|
396
|
+
- `network: "container:<id>"` is blocked by default (namespace join bypass risk).
|
|
397
|
+
- Break-glass override: `agents.defaults.sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true`.
|
|
398
|
+
|
|
399
|
+
Docker installs and the containerized gateway live here:
|
|
400
|
+
[Docker](/install/docker)
|
|
401
|
+
|
|
402
|
+
For Docker gateway deployments, `scripts/docker/setup.sh` can bootstrap sandbox config.
|
|
403
|
+
Set `QUANTUMCLAW_SANDBOX=1` (or `true`/`yes`/`on`) to enable that path. You can
|
|
404
|
+
override socket location with `QUANTUMCLAW_DOCKER_SOCKET`. Full setup and env
|
|
405
|
+
reference: [Docker](/install/docker#enable-agent-sandbox-for-docker-gateway-opt-in).
|
|
406
|
+
|
|
407
|
+
## setupCommand (one-time container setup)
|
|
408
|
+
|
|
409
|
+
`setupCommand` runs **once** after the sandbox container is created (not on every run).
|
|
410
|
+
It executes inside the container via `sh -lc`.
|
|
411
|
+
|
|
412
|
+
Paths:
|
|
413
|
+
|
|
414
|
+
- Global: `agents.defaults.sandbox.docker.setupCommand`
|
|
415
|
+
- Per-agent: `agents.list[].sandbox.docker.setupCommand`
|
|
416
|
+
|
|
417
|
+
Common pitfalls:
|
|
418
|
+
|
|
419
|
+
- Default `docker.network` is `"none"` (no egress), so package installs will fail.
|
|
420
|
+
- `docker.network: "container:<id>"` requires `dangerouslyAllowContainerNamespaceJoin: true` and is break-glass only.
|
|
421
|
+
- `readOnlyRoot: true` prevents writes; set `readOnlyRoot: false` or bake a custom image.
|
|
422
|
+
- `user` must be root for package installs (omit `user` or set `user: "0:0"`).
|
|
423
|
+
- Sandbox exec does **not** inherit host `process.env`. Use
|
|
424
|
+
`agents.defaults.sandbox.docker.env` (or a custom image) for skill API keys.
|
|
425
|
+
|
|
426
|
+
## Tool policy + escape hatches
|
|
427
|
+
|
|
428
|
+
Tool allow/deny policies still apply before sandbox rules. If a tool is denied
|
|
429
|
+
globally or per-agent, sandboxing doesn’t bring it back.
|
|
430
|
+
|
|
431
|
+
`tools.elevated` is an explicit escape hatch that runs `exec` on the host.
|
|
432
|
+
`/exec` directives only apply for authorized senders and persist per session; to hard-disable
|
|
433
|
+
`exec`, use tool policy deny (see [Sandbox vs Tool Policy vs Elevated](/gateway/sandbox-vs-tool-policy-vs-elevated)).
|
|
434
|
+
|
|
435
|
+
Debugging:
|
|
436
|
+
|
|
437
|
+
- Use `quantumclaw sandbox explain` to inspect effective sandbox mode, tool policy, and fix-it config keys.
|
|
438
|
+
- See [Sandbox vs Tool Policy vs Elevated](/gateway/sandbox-vs-tool-policy-vs-elevated) for the “why is this blocked?” mental model.
|
|
439
|
+
Keep it locked down.
|
|
440
|
+
|
|
441
|
+
## Multi-agent overrides
|
|
442
|
+
|
|
443
|
+
Each agent can override sandbox + tools:
|
|
444
|
+
`agents.list[].sandbox` and `agents.list[].tools` (plus `agents.list[].tools.sandbox.tools` for sandbox tool policy).
|
|
445
|
+
See [Multi-Agent Sandbox & Tools](/tools/multi-agent-sandbox-tools) for precedence.
|
|
446
|
+
|
|
447
|
+
## Minimal enable example
|
|
448
|
+
|
|
449
|
+
```json5
|
|
450
|
+
{
|
|
451
|
+
agents: {
|
|
452
|
+
defaults: {
|
|
453
|
+
sandbox: {
|
|
454
|
+
mode: "non-main",
|
|
455
|
+
scope: "session",
|
|
456
|
+
workspaceAccess: "none",
|
|
457
|
+
},
|
|
458
|
+
},
|
|
459
|
+
},
|
|
460
|
+
}
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
## Related docs
|
|
464
|
+
|
|
465
|
+
- [OpenShell](/gateway/openshell) -- managed sandbox backend setup, workspace modes, and config reference
|
|
466
|
+
- [Sandbox Configuration](/gateway/configuration-reference#agents-defaults-sandbox)
|
|
467
|
+
- [Sandbox vs Tool Policy vs Elevated](/gateway/sandbox-vs-tool-policy-vs-elevated) -- debugging "why is this blocked?"
|
|
468
|
+
- [Multi-Agent Sandbox & Tools](/tools/multi-agent-sandbox-tools) -- per-agent overrides and precedence
|
|
469
|
+
- [Security](/gateway/security)
|