CLI commands
ããªã·ãŒ
openclaw policy
openclaw policy ã¯ã忢±ã® Policy plugin ã«ãã£ãŠæäŸãããŸããPolicy ã¯ãæ¢åã® OpenClaw èšå®ã®äžã«ãããšã³ã¿ãŒãã©ã€ãºåãé©åã¬ã€ã€ãŒã§ãã第äºã®èšå®ã·ã¹ãã ã远å ãããã®ã§ã¯ãããŸãããpolicy.jsonc ã¯äœæãããèŠä»¶ãå®çŸ©ããOpenClaw ã¯ã¢ã¯ãã£ããªã¯ãŒã¯ã¹ããŒã¹ã蚌æ ãšããŠèŠ³æž¬ããpolicy ãã«ã¹ãã§ãã¯ã¯ doctor --lint ãéããŠããªãããå ±åããŸããæçµçãªé©åã·ã°ãã«ã¯ãåé¡ã®ãªã doctor --lint å®è¡ã§ããpolicy ã¯ãå¥åã®ãã«ã¹ã²ãŒããäœæããã®ã§ã¯ãªãããã®å
±æ lint ãµãŒãã§ã¹ã«æ€åºçµæãæäŸããŸãã
Policy ã¯çŸåšãèšå®æžã¿ãã£ã³ãã«ãMCP ãµãŒããŒãã¢ãã«ãããã€ããŒããããã¯ãŒã¯ SSRF å§¿å¢ãingress/ãã£ã³ãã«ã¢ã¯ã»ã¹å§¿å¢ãGateway å
¬éå§¿å¢ããšãŒãžã§ã³ãã¯ãŒã¯ã¹ããŒã¹å§¿å¢ãããŒã¿åŠçå§¿å¢ãOpenClaw èšå®ã®ã·ãŒã¯ã¬ãããããã€ããŒ/auth ãããã¡ã€ã«å§¿å¢ãããã³ç®¡ç察象ããŒã«å®£èšã管çããŸããããšãã°ãIT ãŸãã¯ã¯ãŒã¯ã¹ããŒã¹éçšè
ã¯ãTelegram ãæ¿èªæžã¿ãã£ã³ãã«ãããã€ããŒã§ã¯ãªãããšãèšé²ããMCP ãµãŒããŒãšã¢ãã«åç
§ãæ¿èªæžã¿ãšã³ããªã«å¶éãããã©ã€ããŒããããã¯ãŒã¯ã® fetch/browser ã¢ã¯ã»ã¹ãç¡å¹ã®ãŸãŸã«ããããšãèŠæ±ãããã€ã¬ã¯ãã¡ãã»ãŒãžã®ã»ãã·ã§ã³åé¢ãšãã£ã³ãã« ingress å§¿å¢ãã¬ãã¥ãŒæžã¿ã®ç¯å²å
ã«ç¶æããããšãèŠæ±ããGateway ã® bind/auth/HTTP å
¬éãã¬ãã¥ãŒæžã¿ã®ç¯å²å
ã«ç¶æããããšãèŠæ±ãããšãŒãžã§ã³ãã¯ãŒã¯ã¹ããŒã¹ã¢ã¯ã»ã¹ãšããŒã«æåŠãã¬ãã¥ãŒæžã¿å§¿å¢ã«ç¶æããããšãèŠæ±ããOpenClaw èšå®ã® SecretRef ã«ç®¡ç察象ãããã€ããŒã䜿çšããããšãèŠæ±ããèšå® auth ãããã¡ã€ã«ã« provider/mode ã¡ã¿ããŒã¿ãæãããããšãèŠæ±ãã管ç察象ããŒã«ã«ãªã¹ã¯ãšæ©å¯æ§ã®ã¡ã¿ããŒã¿ãæãããããšãèŠæ±ããæ©å¯ãã°ã®ãªãã¯ã·ã§ã³ãèŠæ±ãããã¬ã¡ããªã®ã³ã³ãã³ãååŸãæåŠããã»ãã·ã§ã³ä¿æã¡ã³ããã³ã¹ãèŠæ±ããã»ãã·ã§ã³ãã©ã³ã¹ã¯ãªããã®ã¡ã¢ãªã€ã³ããã¯ã¹åãæåŠãããã®ããã§ doctor --lint ãå
±æé©åã²ãŒããšããŠäœ¿çšã§ããŸãã
ã¯ãŒã¯ã¹ããŒã¹ã«ããããã®ãã£ã³ãã«ã¯æå¹åããŠã¯ãªããªãããã管ç察象ããŒã«ã¯æ¿èªã¡ã¿ããŒã¿ã宣èšããªããã°ãªããªãããšãã£ãæ°žç¶çãªå®£èšãšãOpenClaw ããã®å®£èšã«åŒãç¶ãé©åããŠããããšã蚌æããå埩å¯èœãªæ¹æ³ãå¿ èŠãªå Žåã«ãpolicy ã䜿çšããŸããããŒã«ã«ã®æåã ããå¿ èŠã§ãpolicy ã®æ€åºçµæã蚌æåºåãäžèŠãªå Žåã¯ãéåžžã®èšå®ãšã¯ãŒã¯ã¹ããŒã¹ããã¥ã¡ã³ãã ãã䜿çšããŠãã ããã
ã¯ã€ãã¯ã¹ã¿ãŒã
åå䜿çšåã«ã忢±ã® Policy plugin ãæå¹åããŸãã
openclaw plugins enable policypolicy ãæå¹ãªå Žåãdoctor ã¯ä»»æã® plugins ãã¢ã¯ãã£ãåããã« policy ãã«ã¹ãã§ãã¯ãèªã¿èŸŒããŸããpolicy.jsonc ãååšããªãå Žåã§ã plugin ã¯æå¹ãªãŸãŸãªã®ã§ãdoctor ã¯æ¬ èœããŠããææç©ãå ±åã§ããŸãã
Policy ã¯äœæãããã®ã§ããããŠãŒã¶ãŒã®çŸåšã®èšå®ããçæããããã®ã§ã¯ãããŸããããã£ã³ãã«ãMCP ãµãŒããŒãã¢ãã«ãããã€ããŒããããã¯ãŒã¯å§¿å¢ãingress/ãã£ã³ãã«ã¢ã¯ã»ã¹ãGateway å ¬éããšãŒãžã§ã³ãã¯ãŒã¯ã¹ããŒã¹å§¿å¢ãèšå®æžã¿ sandbox ã©ã³ã¿ã€ã å§¿å¢ãOpenClaw ããŒã¿åŠçå§¿å¢ãèšå®ã·ãŒã¯ã¬ãããããã€ããŒ/auth ãããã¡ã€ã«å§¿å¢ãexec æ¿èªãã¡ã€ã«å§¿å¢ãããã³ããŒã«ã¡ã¿ããŒã¿ã®æå° policy ã¯æ¬¡ã®ããã«ãªããŸãã
{ "channels": { "denyRules": [ { "id": "no-telegram", "when": { "provider": "telegram" }, "reason": "Telegram is not approved for this workspace.", }, ], }, "mcp": { "servers": { "allow": ["docs"], "deny": ["untrusted"], }, }, "models": { "providers": { "allow": ["openai", "anthropic"], "deny": ["openrouter"], }, }, "network": { "privateNetwork": { "allow": false, }, }, "ingress": { "session": { "requireDmScope": "per-channel-peer", }, "channels": { "allowDmPolicies": ["pairing", "allowlist", "disabled"], "denyOpenGroups": true, "requireMentionInGroups": true, }, }, "gateway": { "exposure": { "allowNonLoopbackBind": false, "allowTailscaleFunnel": false, }, "auth": { "requireAuth": true, "requireExplicitRateLimit": true, }, "controlUi": { "allowInsecure": false, }, "remote": { "allow": false, }, "http": { "denyEndpoints": ["chatCompletions", "responses"], "requireUrlAllowlists": true, }, }, "agents": { "workspace": { "allowedAccess": ["none", "ro"], "denyTools": ["exec", "process", "write", "edit", "apply_patch"], }, }, "dataHandling": { "sensitiveLogging": { "requireRedaction": true, }, "telemetry": { "denyContentCapture": true, }, "retention": { "requireSessionMaintenance": true, }, "memory": { "denySessionTranscriptIndexing": true, }, }, "secrets": { "requireManagedProviders": true, "denySources": ["exec"], "allowInsecureProviders": false, }, "auth": { "profiles": { "requireMetadata": ["provider", "mode"], "allowModes": ["api_key", "token"], }, }, "execApprovals": { "requireFile": true, "defaults": { "allowSecurity": ["deny"] }, "agents": { "allowSecurity": ["deny", "allowlist"], "allowAutoAllowSkills": false, "allowlist": { "expected": ["deploy", "status"] }, }, }, "tools": { "requireMetadata": ["risk", "sensitivity", "owner"], "profiles": { "allow": ["messaging", "minimal"], }, "fs": { "requireWorkspaceOnly": true, }, "exec": { "allowSecurity": ["deny", "allowlist"], "requireAsk": ["always"], "allowHosts": ["sandbox"], }, "elevated": { "allow": false, }, "denyTools": ["group:runtime", "group:fs"], },}ã«ãŒã«ãæš©åšã§ããã«ããŽãªãããã¯ã¯åå空éã«ãããŸãããå
·äœçãªã«ãŒã«ãååšããå Žåã«ãã§ãã¯ãå®è¡ãããŸããOpenClaw ã¯ãçŸåšã® channels.* èšå®ãmcp.servers.*ãmodels.providers.*ãéžæããããšãŒãžã§ã³ãã¢ãã«åç
§ããããã¯ãŒã¯ SSRF èšå®ããã€ã¬ã¯ãã¡ãã»ãŒãžã»ãã·ã§ã³ã¹ã³ãŒãããã£ã³ãã« DM policyããã£ã³ãã«ã°ã«ãŒã policyããã£ã³ãã«/ã°ã«ãŒãã® mention ã²ãŒããGateway ã® bind/auth/Control UI/Tailscale/remote/HTTP å§¿å¢ãOpenClaw èšå®ã®ãšãŒãžã§ã³ã sandbox ã¯ãŒã¯ã¹ããŒã¹ã¢ã¯ã»ã¹ãšããŒã«æåŠå§¿å¢ãããŒã¿åŠçèšå®å§¿å¢ãèšå®ã·ãŒã¯ã¬ãããããã€ããŒãš SecretRef ã®æ¥æŽãèšå® auth ãããã¡ã€ã«ã¡ã¿ããŒã¿ãèšå®æžã¿ã®ã°ããŒãã«/ãšãŒãžã§ã³ãããšã®ããŒã«å§¿å¢ãããã³ TOOLS.md 宣èšã蚌æ ãšããŠèªã¿åããé©åããªãèŠ³æž¬ç¶æ
ãå ±åããŸããpolicy ã non-loopback Gateway bind ãæåŠããå Žåãã©ã³ã¿ã€ã ããã©ã«ããã¬ãã¥ãŒããææããããšãã ã gateway.bind ãçç¥ããŠãã ãããå³å¯ãªèšå®é©åã«ã¯ gateway.bind=loopback ãèšå®ããŸããèªã¿åãå°çšãšãŒãžã§ã³ãå§¿å¢ã§ã¯ã該åœããããã©ã«ããŸãã¯ãšãŒãžã§ã³ãã« sandbox mode ãèšå®ããworkspaceAccess ã none ãŸã㯠ro ã«èšå®ããŠãã ãããsandbox mode ãçç¥ãããŠããå Žåã off ã®å Žåãèªã¿åãå°çš/æžã蟌ã¿äžå¯ policy ã¯æºããããŸãããagents.workspace.denyTools 㯠execãprocessãwriteãeditãapply_patch ããµããŒãããŸããOpenClaw èšå®ã® group:fs ã¯ãã¡ã€ã«å€æŽããŒã«ã察象ãšããgroup:runtime ã¯ã·ã§ã«/ããã»ã¹ããŒã«ã察象ãšããŸããããŒã«å§¿å¢ policy ã¯ãtools.profileãtools.allowãtools.alsoAllowãtools.denyãtools.fs.workspaceOnlyãtools.exec.securityãtools.exec.askãtools.exec.hostãtools.elevated.enabledãããã³åããšãŒãžã§ã³ãããšã® agents.list[].tools.* ãªãŒããŒã©ã€ãã芳枬ããŸããExec æ¿èª policy ã¯ãexecApprovals ã«ãŒã«ãååšããå Žåã«ã®ã¿ãååä»ãã® exec-approvals.json ãããã¯ãææç©ãèªã¿åããŸãã蚌æ ã«ã¯ãsocket ããŒã¯ã³ãæåŸã«äœ¿çšãããã³ãã³ãããã¹ããå«ãããããã©ã«ãããšãŒãžã§ã³ãããšã®å§¿å¢ãallowlist ãã¿ãŒã³ãèšé²ããŸããPolicy ã¯ã©ã³ã¿ã€ã ã§ããŒã«åŒã³åºãã匷å¶ããŸãããã·ãŒã¯ã¬ãã蚌æ ã¯ãprovider/source å§¿å¢ãš SecretRef ã¡ã¿ããŒã¿ãèšé²ããçã®ã·ãŒã¯ã¬ããå€ã¯èšé²ããŸãããPolicy ã¯ãauth-profiles.json ã®ãããªãšãŒãžã§ã³ãããšã®èªèšŒæ
å ±ã¹ãã¢ãèªã¿åã£ãã蚌æãããããŸããããããã®ã¹ãã¢ã¯åŒãç¶ãæ¢åã® auth ãšèªèšŒæ
å ±ãããŒãææããŸããããŒã¿åŠç蚌æ ã¯ãèšå®ã¬ãã«ã®å§¿å¢ã®ã¿ã§ããèšå®æžã¿ã®ãªãã¯ã·ã§ã³ã¢ãŒãããã¬ã¡ããªã®ã³ã³ãã³ãååŸãã°ã«ãã»ãã·ã§ã³ã¡ã³ããã³ã¹ã¢ãŒããã»ãã·ã§ã³ãã©ã³ã¹ã¯ãªããã®ã¡ã¢ãªã€ã³ããã¯ã¹åèšå®ããã§ãã¯ããŸããçãã°ããã¬ã¡ããªãšã¯ã¹ããŒãããã©ã³ã¹ã¯ãªããå
容ãã¡ã¢ãªãã¡ã€ã«ãæ€æ»ããããå人ããŒã¿ãã·ãŒã¯ã¬ãããååšããªãããšã蚌æãããã¯ããŸããã
Policy ã«ãŒã«ãªãã¡ã¬ã³ã¹
以äžã®å policy ãã£ãŒã«ãã¯ä»»æã§ãã察å¿ããã«ãŒã«ã policy.jsonc ã«ååšããå Žåã«ã®ã¿ããã§ãã¯ãå®è¡ãããŸããèŠ³æž¬ç¶æ
ã¯æ¢åã® OpenClaw èšå®ãŸãã¯ã¯ãŒã¯ã¹ããŒã¹ã¡ã¿ããŒã¿ã§ããpolicy ã¯ããªãããå ±åããŸããã修埩ãã¹ãæç€ºçã«å©çšå¯èœã§æå¹åãããŠããªãéããã©ã³ã¿ã€ã æåãæžãæããŸããã
Policy ãã¡ã€ã«ã¯å³å¯ã§ãããµããŒããããŠããªãã»ã¯ã·ã§ã³ãŸãã¯ã«ãŒã«ããŒã¯ãç¡èŠãããã®ã§ã¯ãªã policy/policy-jsonc-invalid ãšããŠå ±åãããŸãã
Policy ãªãŒããŒã¬ã€ã¯ãåºç¯ãªãããã¬ãã«ã«ãŒã«ãã°ããŒãã«ã«ä¿æãããã®åŸãååä»ãã¹ã³ãŒããããã¯ã§æç€ºçãªã»ã¬ã¯ã¿ãŒã«å¯ŸããŠãã峿 Œãªéåžžã® policy ã»ã¯ã·ã§ã³ã远å ã§ããããã«ããŸããã¹ã³ãŒãåã¯èª¬æçšã®ãã±ããã«ãããŸããããããã³ã°ã«ã¯ã¹ã³ãŒãå ã®ã»ã¬ã¯ã¿ãŒå€ã䜿çšãããŸãããªãŒããŒã¬ã€ã¯å ç®çã§ããã°ããŒãã«ãªäž»åŒµã¯åŒãç¶ãå®è¡ãããã¹ã³ãŒãä»ãã®äž»åŒµã¯åã芳枬èšå®ã«å¯ŸããŠç¬èªã®æ€åºçµæãåºãããšãã§ããŸãã
ã¹ã³ãŒãä»ããªãŒããŒã¬ã€
äžéšã®ãšãŒãžã§ã³ããŸãã¯ãã£ã³ãã«ã«ãããã¬ãã«ã®ããŒã¹ã©ã€ã³ãã峿 Œãª policy ãå¿
èŠãªå Žåã¯ãscopes.<scopeName> ã䜿çšããŸãããšãŒãžã§ã³ãã¹ã³ãŒãã®ã»ã¯ã·ã§ã³ã¯ agentIds ã䜿çšãããã㯠tools.*ãagents.workspace.*ãsandbox.*ãdataHandling.memory.*ãexecApprovals.* ããµããŒãããŸãããã£ã³ãã«ã¹ã³ãŒãã® ingress 㯠channelIds ã䜿çšãããã㯠ingress.channels.* ããµããŒãããŸãããµããŒããããŠããªãã»ã¯ã·ã§ã³ã¯ãç¡èŠãããã®ã§ã¯ãªãæåŠãããŸããagentIds ãšã³ããªã agents.list[] ã«ååšããªãå ŽåãOpenClaw ã¯ãã®ã©ã³ã¿ã€ã ãšãŒãžã§ã³ã ID ã«ã€ããŠãç¶æ¿ãããã°ããŒãã«/ããã©ã«ãå§¿å¢ã«å¯ŸããŠã¹ã³ãŒãä»ãã«ãŒã«ãè©äŸ¡ããŸãã
{ "tools": { "exec": { "allowHosts": ["sandbox", "node"], }, }, "sandbox": { "requireMode": ["all", "non-main"], }, "scopes": { "release-workspace": { "agentIds": ["release-agent", "review-agent"], "agents": { "workspace": { "allowedAccess": ["none", "ro"], }, }, }, "release-lockdown": { "agentIds": ["release-agent"], "tools": { "exec": { "allowHosts": ["sandbox"], "allowSecurity": ["deny", "allowlist"], "requireAsk": ["always"], }, "denyTools": ["exec", "process", "write", "edit", "apply_patch"], }, "sandbox": { "requireMode": ["all"], "allowBackends": ["docker"], }, "dataHandling": { "memory": { "denySessionTranscriptIndexing": true, }, }, }, "shell-sandbox": { "agentIds": ["shell-agent"], "sandbox": { "allowBackends": ["openshell"], "containers": { "requireReadOnlyMounts": false, }, }, }, "telegram-ingress": { "channelIds": ["telegram"], "ingress": { "channels": { "allowDmPolicies": ["pairing"], "denyOpenGroups": true, "requireMentionInGroups": true, }, }, }, },}äžèšã®ããã«ãåã¹ã³ãŒããç°ãªããã£ãŒã«ãã管çããå ŽåãåããšãŒãžã§ã³ããè€æ°ã®ã¹ã³ãŒãã«å«ããããšãã§ããŸããåããšãŒãžã§ã³ãã«å¯ŸããŠç¹°ãè¿ãããã¹ã³ãŒãä»ããã£ãŒã«ãã¯ãpolicy ã¡ã¿ããŒã¿ã«åŸã£ãŠåçãŸãã¯ããå¶éçã§ãªããã°ãªããŸããããã匱ãéè€ããäž»åŒµã¯æåŠãããŸãã峿 Œæ§ã¡ã¿ããŒã¿ã§ã¯ãallow-list ã¯éšåéåãdeny-list ã¯äžäœéåãå¿ é boolean ã¯åºå®èŠä»¶ãšããŠæ±ãããŸãã
ã³ã³ããå§¿å¢ policy ã¯ãOpenClaw ãäžèŽãããšãŒãžã§ã³ãã«ã€ããŠèŠ³æž¬ã§ãã蚌æ ã«å¯ŸããŠã®ã¿è©äŸ¡ãããŸããæå¹ãª sandbox.containers.* ã«ãŒã«ããsandbox backend ããã®ãã£ãŒã«ããå
¬éã§ããªããšãŒãžã§ã³ãã«é©çšãããå Žåãpolicy ã¯ãã®äž»åŒµãåæ ŒãšããŠæ±ãã®ã§ã¯ãªããpolicy/sandbox-container-posture-unobservable ãå ±åããŸããç°ãªã sandbox backend ã䜿çšãããšãŒãžã§ã³ãã°ã«ãŒãã«ã¯åå¥ã® agentIds ã¹ã³ãŒãã䜿çšãããããã®ãã£ãŒã«ãã芳枬ã§ããªãã°ã«ãŒãã§ã¯ããµããŒããããŠããªãã³ã³ããã«ãŒã«ãæªèšå®ãŸã㯠false ã®ãŸãŸã«ããŸãã
ãããã¬ãã«ã® ingress.session.requireDmScope ã¯ãsession.dmScope ããã£ã³ãã«ã«åž°å±å¯èœãªèšŒæ ã§ã¯ãªããããã°ããŒãã«ã®ãŸãŸã§ãã
| ã»ã¬ã¯ã¿ãŒ | ãµããŒããããã»ã¯ã·ã§ã³ | 䜿çšããå Žå |
|---|---|---|
agentIds |
tools, agents.workspace, sandbox, dataHandling.memory, and execApprovals |
1 ã€ä»¥äžã®ã©ã³ã¿ã€ã ãšãŒãžã§ã³ãã«ãã峿 Œãªã«ãŒã«ãå¿ èŠãªå Žåã |
channelIds |
ingress.channels |
1 ã€ä»¥äžã®ãã£ã³ãã«ã«ãã峿 Œãªå ¥å£ã«ãŒã«ãå¿ èŠãªå Žåã |
policy.jsonc ã«ååšãããã¹ãŠã®ã¹ã³ãŒãã¯ãæå¹ã§é©çšå¯èœã§ãªããã°ãªããŸããã
ãã£ã³ãã«
| ããªã·ãŒãã£ãŒã«ã | 芳枬ãããç¶æ | 䜿çšããå Žå |
|---|---|---|
channels.denyRules[].when.provider |
channels.* ãããã€ããŒãšæå¹åç¶æ
|
telegram ãªã©ã®ãããã€ããŒããæ§ææžã¿ãã£ã³ãã«ãæåŠããŸãã |
channels.denyRules[].reason |
æ€åºã¡ãã»ãŒãžãšä¿®åŸ©ãã³ãã®ã³ã³ããã¹ã | ãããã€ããŒãæåŠãããçç±ã説æããŸãã |
MCP ãµãŒããŒ
| ããªã·ãŒãã£ãŒã«ã | 芳枬ãããç¶æ | 䜿çšããå Žå |
|---|---|---|
mcp.servers.allow |
mcp.servers.* ID |
æ§ææžã¿ã®ãã¹ãŠã® MCP ãµãŒããŒãèš±å¯ãªã¹ãã«å«ãŸããããšãèŠæ±ããŸãã |
mcp.servers.deny |
mcp.servers.* ID |
ç¹å®ã®æ§ææžã¿ MCP ãµãŒã㌠ID ãæåŠããŸãã |
ã¢ãã«ãããã€ããŒ
| ããªã·ãŒãã£ãŒã«ã | 芳枬ãããç¶æ | 䜿çšããå Žå |
|---|---|---|
models.providers.allow |
models.providers.* ID ãšéžæãããã¢ãã«åç
§ |
æ§ææžã¿ãããã€ããŒãšéžæãããã¢ãã«åç §ãæ¿èªæžã¿ãããã€ããŒã䜿çšããããšãèŠæ±ããŸãã |
models.providers.deny |
models.providers.* ID ãšéžæãããã¢ãã«åç
§ |
æ§ææžã¿ãããã€ããŒãšéžæãããã¢ãã«åç §ããããã€ã㌠ID ã§æåŠããŸãã |
ãããã¯ãŒã¯
| ããªã·ãŒãã£ãŒã«ã | 芳枬ãããç¶æ | 䜿çšããå Žå |
|---|---|---|
network.privateNetwork.allow |
ãã©ã€ããŒããããã¯ãŒã¯ SSRF äŸå€çµè·¯ | false ã«èšå®ããŠããã©ã€ããŒããããã¯ãŒã¯ã¢ã¯ã»ã¹ãç¡å¹ã®ãŸãŸã«ããããšãèŠæ±ããŸãã |
å ¥å£ãšãã£ã³ãã«ã¢ã¯ã»ã¹
| ããªã·ãŒãã£ãŒã«ã | 芳枬ãããç¶æ | 䜿çšããå Žå |
|---|---|---|
ingress.session.requireDmScope |
session.dmScope |
ã¬ãã¥ãŒæžã¿ã®ãã€ã¬ã¯ãã¡ãã»ãŒãžåé¢ã¹ã³ãŒããèŠæ±ããŸãã |
ingress.channels.allowDmPolicies |
channels.*.dmPolicy ãšã¬ã¬ã·ãŒãã£ã³ãã« DM ããªã·ãŒãã£ãŒã«ã |
ã¬ãã¥ãŒæžã¿ã®ãã€ã¬ã¯ãã¡ãã»ãŒãžãã£ã³ãã«ããªã·ãŒã®ã¿ãèš±å¯ããŸãã |
ingress.channels.denyOpenGroups |
ãã£ã³ãã«ãã¢ã«ãŠã³ããã°ã«ãŒãã®å ¥å£ããªã·ãŒ | æ§ææžã¿ãã£ã³ãã«ãšã¢ã«ãŠã³ãã«å¯ŸããŠãªãŒãã³ã°ã«ãŒãå ¥å£ãæåŠããŸãã |
ingress.channels.requireMentionInGroups |
ãã£ã³ãã«ãã¢ã«ãŠã³ããã°ã«ãŒããã®ã«ãããã¹ããããã¡ã³ã·ã§ã³ã²ãŒãæ§æ | ã°ã«ãŒãå ¥å£ããªãŒãã³ãŸãã¯ã¡ã³ã·ã§ã³ã²ãŒãä»ãã®å Žåã«ãã¡ã³ã·ã§ã³ã²ãŒããèŠæ±ããŸãã |
Gateway
| ããªã·ãŒãã£ãŒã«ã | 芳枬ãããç¶æ | 䜿çšããå Žå |
|---|---|---|
gateway.exposure.allowNonLoopbackBind |
gateway.bind |
false ã«èšå®ããŠãGateway ã®ã«ãŒãããã¯ãã€ã³ããèŠæ±ããŸãã |
gateway.exposure.allowTailscaleFunnel |
Tailscale ãµãŒã/ãã¡ãã« Gateway å§¿å¢ | false ã«èšå®ããŠãTailscale Funnel ã®å
¬éãæåŠããŸãã |
gateway.auth.requireAuth |
gateway.auth.mode |
true ã«èšå®ããŠãç¡å¹åããã Gateway èªèšŒãæåŠããŸãã |
gateway.auth.requireExplicitRateLimit |
gateway.auth.rateLimit |
true ã«èšå®ããŠãæç€ºçãªèªèšŒã¬ãŒãå¶éæ§æãèŠæ±ããŸãã |
gateway.controlUi.allowInsecure |
Control UI ã®å®å šã§ãªãèªèšŒ/ããã€ã¹/ãªãªãžã³ãã°ã« | false ã«èšå®ããŠãå®å
šã§ãªã Control UI å
¬éãã°ã«ãæåŠããŸãã |
gateway.remote.allow |
ãªã¢ãŒã Gateway ã¢ãŒã/æ§æ | false ã«èšå®ããŠããªã¢ãŒã Gateway ã¢ãŒããæåŠããŸãã |
gateway.http.denyEndpoints |
Gateway HTTP API ãšã³ããã€ã³ã | chatCompletions ã responses ãªã©ã®ãšã³ããã€ã³ã ID ãæåŠããŸãã |
gateway.http.requireUrlAllowlists |
Gateway HTTP URL ååŸå ¥å | true ã«èšå®ããŠãURL ååŸå
¥åã« URL èš±å¯ãªã¹ããèŠæ±ããŸãã |
ãšãŒãžã§ã³ãã¯ãŒã¯ã¹ããŒã¹
| ããªã·ãŒãã£ãŒã«ã | 芳枬ãããç¶æ | 䜿çšããå Žå |
|---|---|---|
agents.workspace.allowedAccess |
agents.defaults.sandbox.workspaceAccess ãš agents.list[].sandbox.workspaceAccess |
none ã ro ãªã©ã®ãµã³ãããã¯ã¹ã¯ãŒã¯ã¹ããŒã¹ã¢ã¯ã»ã¹å€ã®ã¿ãèš±å¯ããŸãã |
agents.workspace.denyTools |
ã°ããŒãã«ããã³ãšãŒãžã§ã³ãããšã®ããŒã«æåŠæ§æ | execãprocessãwriteãeditãapply_patch ãªã©ã®ã¯ãŒã¯ã¹ããŒã¹/ã©ã³ã¿ã€ã 倿ŽããŒã«ãæåŠããããšãèŠæ±ããŸãã |
ãµã³ãããã¯ã¹å§¿å¢
| ããªã·ãŒãã£ãŒã«ã | 芳枬ãããç¶æ | 䜿çšããå Žå |
|---|---|---|
sandbox.requireMode |
agents.defaults.sandbox.mode ãšãšãŒãžã§ã³ãããšã®ã¢ãŒã |
all ã non-main ãªã©ã®ã¬ãã¥ãŒæžã¿ãµã³ãããã¯ã¹ã¢ãŒãã®ã¿ãèš±å¯ããŸãã |
sandbox.allowBackends |
agents.defaults.sandbox.backend ãšãšãŒãžã§ã³ãããšã®ããã¯ãšã³ã |
docker ãªã©ã®ã¬ãã¥ãŒæžã¿ãµã³ãããã¯ã¹ããã¯ãšã³ãã®ã¿ãèš±å¯ããŸãã |
sandbox.containers.denyHostNetwork |
ã³ã³ããããŒã¹ã®ãµã³ãããã¯ã¹/ãã©ãŠã¶ãããã¯ãŒã¯ã¢ãŒã | ãã¹ããããã¯ãŒã¯ã¢ãŒããæåŠããŸãã |
sandbox.containers.denyContainerNamespaceJoin |
ã³ã³ããããŒã¹ã®ãµã³ãããã¯ã¹/ãã©ãŠã¶ãããã¯ãŒã¯ã¢ãŒã | å¥ã®ã³ã³ãããããã¯ãŒã¯åå空éãžã®åå ãæåŠããŸãã |
sandbox.containers.requireReadOnlyMounts |
ã³ã³ããããŒã¹ã®ãµã³ãããã¯ã¹/ãã©ãŠã¶ããŠã³ãã¢ãŒã | ããŠã³ããèªã¿åãå°çšã§ããããšãèŠæ±ããŸãã |
sandbox.containers.denyContainerRuntimeSocketMounts |
ã³ã³ããããŒã¹ã®ãµã³ãããã¯ã¹/ãã©ãŠã¶ããŠã³ãã¿ãŒã²ãã | ã³ã³ããã©ã³ã¿ã€ã ãœã±ããã®ããŠã³ããæåŠããŸãã |
sandbox.containers.denyUnconfinedProfiles |
ã³ã³ããã»ãã¥ãªãã£ãããã¡ã€ã«å§¿å¢ | å¶éãªãã®ã³ã³ããã»ãã¥ãªãã£ãããã¡ã€ã«ãæåŠããŸãã |
sandbox.browser.requireCdpSourceRange |
ãµã³ãããã¯ã¹ãã©ãŠã¶ CDP ãœãŒã¹ç¯å² | ãã©ãŠã¶ CDP å ¬éã§ãœãŒã¹ç¯å²ã®å®£èšãèŠæ±ããŸãã |
ããªã·ãŒã¯æ¬ èœãã sandbox.mode ãæé»ã®ããã©ã«ã off ãšããŠæ±ãããã
sandbox.requireMode ã¯ãæ°èŠãŸãã¯æªæ§æã®ãµã³ãããã¯ã¹ã
["all"] ã®ãããªèš±å¯ãªã¹ãå€ãšããŠå ±åããŸãã
ããŒã¿åŠç
| ããªã·ãŒãã£ãŒã«ã | 芳枬ãããç¶æ | 䜿çšããå Žå |
|---|---|---|
dataHandling.sensitiveLogging.requireRedaction |
logging.redactSensitive |
true ã«èšå®ããŠãlogging.redactSensitive: "off" ãæåŠããŸãã |
dataHandling.telemetry.denyContentCapture |
diagnostics.otel.captureContent |
true ã«èšå®ããŠããã¬ã¡ããªãŒã®ã³ã³ãã³ããã£ããã£ãæåŠããŸãã |
dataHandling.retention.requireSessionMaintenance |
session.maintenance.mode |
true ã«èšå®ããŠãæå¹ãªã»ãã·ã§ã³ã¡ã³ããã³ã¹ã¢ãŒã enforce ãèŠæ±ããŸãã |
dataHandling.memory.denySessionTranscriptIndexing |
memory.qmd.sessions.enabled ãš agents.*.memorySearch.experimental.sessionMemory |
true ã«èšå®ããŠãã»ãã·ã§ã³ transcript ã®ã¡ã¢ãªãžã®ã€ã³ããã¯ã¹åãæåŠããŸãã |
ã·ãŒã¯ã¬ãã
| ããªã·ãŒãã£ãŒã«ã | 芳枬ãããç¶æ | 䜿çšããå Žå |
|---|---|---|
secrets.requireManagedProviders |
Config SecretRefs ãš secrets.providers.* å®£èš |
true ã«èšå®ããŠãSecretRefs ãå®£èšæžã¿ãããã€ããŒãæãããšãèŠæ±ããŸãã |
secrets.denySources |
ã·ãŒã¯ã¬ãããããã€ããŒãœãŒã¹ãš SecretRef ãœãŒã¹ | execãfileããŸãã¯å¥ã®æ§ææžã¿ãœãŒã¹åãªã©ã®ãœãŒã¹ãæåŠããŸãã |
secrets.allowInsecureProviders |
å®å šã§ãªãã·ãŒã¯ã¬ãããããã€ããŒå§¿å¢ãã©ã° | false ã«èšå®ããŠãå®å
šã§ãªãå§¿å¢ãéžæãããããã€ããŒãæåŠããŸãã |
Exec æ¿èª
Exec æ¿èªããªã·ãŒã¯ãã¢ã¯ãã£ããªã©ã³ã¿ã€ã exec-approvals.json
ã¢ãŒãã£ãã¡ã¯ãã芳枬ããŸããããã©ã«ãã§ã¯ãã㯠~/.openclaw/exec-approvals.json ã§ãã
OPENCLAW_STATE_DIR ãèšå®ãããŠããå ŽåãPolicy ã¯
$OPENCLAW_STATE_DIR/exec-approvals.json ãèªã¿åããŸãã
execApprovals.defaults.* ã execApprovals.agents.* ãªã©ã®å®éã®å§¿å¢ã«ãŒã«ã«ã¯ã
èªã¿åãå¯èœãªã¢ãŒãã£ãã¡ã¯ã蚌æ ãå¿
èŠã§ããã¢ãŒãã£ãã¡ã¯ããæ¬ èœããŠãããç¡å¹ãªå Žåã¯ã
åæã©ã³ã¿ã€ã ããã©ã«ãã«å¯Ÿãããã¹ããšãã©ãŒãåæ Œã«ãªãã®ã§ã¯ãªãã芳枬äžèœãªèšŒæ ãšããŠå ±åãããŸãã
ã¢ãŒãã£ãã¡ã¯ããèªã¿åãå¯èœã«ãªããšãçç¥ãããæ¿èªãã£ãŒã«ãã¯ã©ã³ã¿ã€ã ããã©ã«ããç¶æ¿ããŸããæ¬ èœãã
defaults.security 㯠full ã§ãæ¬ èœãããšãŒãžã§ã³ãã»ãã¥ãªãã£ã¯ãã®
ããã©ã«ããç¶æ¿ããŸãã蚌æ ã«ã¯ defaultsãagents.*ã
agents.*.allowlist[].pattern ã«å ããŠãä»»æã® argPatternãæå¹ãª
autoAllowSkills å§¿å¢ãããã³ãšã³ããªãœãŒã¹ãå«ãŸããŸãããœã±ãã
ãã¹/ããŒã¯ã³ãcommandTextãlastUsedCommandã解決æžã¿ãã¹ãã¿ã€ã ã¹ã¿ã³ãã¯å«ãŸããŸããã
| ããªã·ãŒãã£ãŒã«ã | 芳枬ãããç¶æ | 䜿çšããå Žå |
|---|---|---|
execApprovals.requireFile |
ã¢ã¯ãã£ããªã©ã³ã¿ã€ã exec-approvals.json ãã¹ |
æ¿èªã¢ãŒãã£ãã¡ã¯ããååšããè§£æã§ããããšãèŠæ±ããã«ã¯ true ã«èšå®ããŸãã |
execApprovals.defaults.allowSecurity |
defaults.securityãããã©ã«ã㯠full |
æ¿èªæžã¿ã®ããã©ã«ãæ¿èªã»ãã¥ãªãã£ã¢ãŒãã®ã¿ãèš±å¯ããŸãã |
execApprovals.agents.allowSecurity |
agents.*.securityãããã©ã«ããç¶æ¿ |
ãšãŒãžã§ã³ãããšã«æå¹ãªæ¿èªã»ãã¥ãªãã£ã¢ãŒãã®ãã¡ãæ¿èªæžã¿ã®ãã®ã ããèš±å¯ããŸãã |
execApprovals.agents.allowAutoAllowSkills |
defaults.autoAllowSkills ãš agents.*.autoAllowSkillsãã©ã³ã¿ã€ã ããã©ã«ããç¶æ¿ |
æé»çãªã¹ãã« CLI æ¿èªãªãã§ãå³å¯ãªæåèš±å¯ãªã¹ããèŠæ±ããã«ã¯ false ã«èšå®ããŸãã |
execApprovals.agents.allowlist.expected |
éçŽããã agents.*.allowlist[] ãã¿ãŒã³ãšä»»æã® argPattern ãšã³ã㪠|
æ¿èªèš±å¯ãªã¹ããã¬ãã¥ãŒæžã¿ã®ãã¿ãŒã³ã»ãããšäžèŽããããšãèŠæ±ããŸãã |
ããšãã°ãæ¿èªã¢ãŒãã£ãã¡ã¯ããèŠæ±ããå¯å®¹ãªããã©ã«ããæåŠãã éžæãããšãŒãžã§ã³ãã«å¯ŸããŠã¬ãã¥ãŒæžã¿ã® exec æ¿èªå§¿å¢ã®ã¿ãèš±å¯ããŸãã
{ "execApprovals": { "requireFile": true, "defaults": { // Security modes: "deny", "allowlist", or "full". // This default permits only the locked-down deny posture. "allowSecurity": ["deny"], }, }, "scopes": { "restricted-shell": { "agentIds": ["family-agent", "groups-agent"], "execApprovals": { "agents": { // Selected agents may use reviewed allowlist posture, but not "full". "allowSecurity": ["allowlist"], // false means skill CLIs must appear in the reviewed allowlist instead of // being implicitly approved by autoAllowSkills. "allowAutoAllowSkills": false, "allowlist": { "expected": [ // Simple entry: exact reviewed executable pattern with no argPattern. "travel-hub", // Constrained entry: pattern plus reviewed argument regex. { "pattern": "calendar-cli", "argPattern": "^sync\\b" }, "/bin/date", ], }, }, }, }, },}èªèšŒãããã¡ã€ã«
| ããªã·ãŒãã£ãŒã«ã | 芳枬ãããç¶æ | 䜿çšããå Žå |
|---|---|---|
auth.profiles.requireMetadata |
auth.profiles.* ã®ãããã€ããŒãšã¢ãŒãã¡ã¿ããŒã¿ |
config èªèšŒãããã¡ã€ã«ã§ provider ã mode ãªã©ã®ã¡ã¿ããŒã¿ããŒãèŠæ±ããŸãã |
auth.profiles.allowModes |
auth.profiles.*.mode |
api_keyãaws-sdkãoauthãtoken ãªã©ããµããŒããããŠããèªèšŒãããã¡ã€ã«ã¢ãŒãã®ã¿ãèš±å¯ããŸãã |
ããŒã«ã¡ã¿ããŒã¿
| ããªã·ãŒãã£ãŒã«ã | 芳枬ãããç¶æ | 䜿çšããå Žå |
|---|---|---|
tools.requireMetadata |
管ç察象㮠TOOLS.md å®£èš |
管ç察象ããŒã«ã riskãsensitivityãowner ãªã©ã®ã¡ã¿ããŒã¿ããŒã宣èšããããšãèŠæ±ããŸãã |
ããŒã«å§¿å¢
| ããªã·ãŒãã£ãŒã«ã | 芳枬ãããç¶æ | 䜿çšããå Žå |
|---|---|---|
tools.profiles.allow |
tools.profile ãš agents.list[].tools.profile |
minimalãmessagingãcoding ãªã©ã®ããŒã«ãããã¡ã€ã« ID ã®ã¿ãèš±å¯ããŸãã |
tools.fs.requireWorkspaceOnly |
tools.fs.workspaceOnly ãšãšãŒãžã§ã³ãããšã® tools.fs ãªãŒããŒã©ã€ã |
ã¯ãŒã¯ã¹ããŒã¹éå®ã®ãã¡ã€ã«ã·ã¹ãã ããŒã«å§¿å¢ãèŠæ±ããã«ã¯ true ã«èšå®ããŸãã |
tools.exec.allowSecurity |
tools.exec.security ãšãšãŒãžã§ã³ãããšã® exec ã»ãã¥ãªã㣠|
deny ã allowlist ãªã©ã® exec ã»ãã¥ãªãã£ã¢ãŒãã®ã¿ãèš±å¯ããŸãã |
tools.exec.requireAsk |
tools.exec.ask ãšãšãŒãžã§ã³ãããšã® exec ask ã¢ãŒã |
always ãªã©ã®æ¿èªå§¿å¢ãèŠæ±ããŸãã |
tools.exec.allowHosts |
tools.exec.host ãšãšãŒãžã§ã³ãããšã® exec ãã¹ãã«ãŒãã£ã³ã° |
sandbox ãªã©ã® exec ãã¹ãã«ãŒãã£ã³ã°ã¢ãŒãã®ã¿ãèš±å¯ããŸãã |
tools.elevated.allow |
tools.elevated.enabled ãšãšãŒãžã§ã³ãããšã®ææ Œå§¿å¢ |
ææ ŒããŒã«ã¢ãŒããç¡å¹ã®ãŸãŸã«ããããšãèŠæ±ããã«ã¯ false ã«èšå®ããŸãã |
tools.alsoAllow.expected |
tools.alsoAllow ãšãšãŒãžã§ã³ãããšã® tools.alsoAllow |
æ£ç¢ºãª alsoAllow ãšã³ããªãèŠæ±ããäžè¶³ãŸãã¯æ³å®å€ã®è¿œå ããŒã«æš©éä»äžãå ±åããŸãã |
tools.denyTools |
tools.deny ãš agents.list[].tools.deny |
èšå®æžã¿ã®ããŒã«æåŠãªã¹ãã«ãgroup:runtime ã group:fs ãªã©ã®ããŒã« ID ãŸãã¯ã°ã«ãŒããå«ããããšãèŠæ±ããŸãã |
äœæäžã«ããªã·ãŒã®ã¿ã®ãã§ãã¯ãå®è¡ããŸãã
openclaw policy checkopenclaw policy check --jsonopenclaw policy check --severity-min errorpolicy check ã¯ããªã·ãŒãã§ãã¯ã»ããã®ã¿ãå®è¡ãã蚌æ ãæ€åºçµæã
蚌æããã·ã¥ãåºåããŸããPolicy plugin ãæå¹ãªå Žåãåãæ€åºçµæã¯
openclaw doctor --lint ã«ã衚瀺ãããŸãã
ãªãã¬ãŒã¿ãŒã®ããªã·ãŒãã¡ã€ã«ããäœææžã¿ã®ããŒã¹ã©ã€ã³ããªã·ãŒãã¡ã€ã«ãšæ¯èŒããŸãã
openclaw policy compare --baseline official.policy.jsoncopenclaw policy compare --baseline official.policy.jsonc --policy policy.jsonc --jsonpolicy compare ã¯ãããªã·ãŒãã¡ã€ã«æ§æåå£«ãæ¯èŒããŸããOpenClaw ã®
ã©ã³ã¿ã€ã ç¶æ
ã蚌æ ãèªèšŒæ
å ±ãã·ãŒã¯ã¬ããã¯æ€æ»ããŸããããã®ã³ãã³ãã¯ã
ã¹ã³ãŒãä»ããªãŒããŒã¬ã€ã管çãããã®ãšåãããªã·ãŒã«ãŒã«ã¡ã¿ããŒã¿ã䜿çšããŸãã
èš±å¯ãªã¹ãã¯åçãŸãã¯ããçããæåŠãªã¹ãã¯åçãŸãã¯ããåºããå¿
é boolean ã¯
å¿
é å€ãç¶æããé åºä»ãæååã¯èšå®ãããé åºã®ããå¶éçãªç«¯ã«åããå Žåã®ã¿
ç§»åã§ããå®å
šäžèŽãªã¹ãã¯äžèŽããå¿
èŠããããŸãã
ããŒã¹ã©ã€ã³ãã¡ã€ã«ã¯çµç¹ãäœæããããªã·ãŒã«ã§ããŸãããã§ãã¯å¯Ÿè±¡ããªã·ãŒã¯ã
ãã峿 Œãªå€ã䜿çšãããã远å ã®ããªã·ãŒã«ãŒã«ã远å ãããã§ããŸããæäžäœã®
ãã§ãã¯å¯Ÿè±¡ã«ãŒã«ã¯ãåçãŸãã¯ããå¶éçã§ããã°ãã¹ã³ãŒãä»ãããŒã¹ã©ã€ã³ã«ãŒã«ã
æºãããŸããããã¯æäžäœããªã·ãŒãåºãé©çšãããããã§ããã¹ã³ãŒãåã¯äžèŽããå¿
èŠããããŸããã
ã¹ã³ãŒãä»ãæ¯èŒã¯ãagentIds ã channelIds ãªã©ã®ã»ã¬ã¯ã¿ãŒå€ãšã
ãã§ãã¯å¯Ÿè±¡ã®ããªã·ãŒãã£ãŒã«ãã«ãã£ãŠããŒä»ããããŸãã
ã¯ãªãŒã³ãªæ¯èŒ JSON åºåã®äŸã¯ãããªã·ãŒãã¡ã€ã«æ¯èŒç¶æ ã®ã¿ãå ±åããŸãã
{ "ok": true, "baselinePath": "official.policy.jsonc", "policyPath": "policy.jsonc", "rulesChecked": 3, "findings": []}ã¯ãªãŒã³ãª policy check --json åºåã®äŸã«ã¯ããªãã¬ãŒã¿ãŒãŸãã¯ç£ç£è
ãèšé²ã§ãã
å®å®ããããã·ã¥ãå«ãŸããŸãã
{ "ok": true, "attestation": { "policy": { "path": "policy.jsonc", "hash": "sha256:..." }, "workspace": { "scope": "policy", "hash": "sha256:..." }, "findingsHash": "sha256:...", "attestationHash": "sha256:..." }, "checksRun": 5, "checksSkipped": 0, "findings": []}ããªã·ãŒãèšå®ãã
ããªã·ãŒèšå®ã¯ plugins.entries.policy.config é
äžã«ãããŸãã
{ "plugins": { "entries": { "policy": { "enabled": true, "config": { "enabled": true, "path": "policy.jsonc", "workspaceRepairs": false, "expectedHash": "sha256:...", "expectedAttestationHash": "sha256:...", }, }, }, },}| èšå® | ç®ç |
|---|---|
enabled |
policy.jsonc ãååšããåã§ãããªã·ãŒãã§ãã¯ãæå¹ã«ããŸãã |
workspaceRepairs |
doctor --fix ãããªã·ãŒç®¡ç察象ã®ã¯ãŒã¯ã¹ããŒã¹èšå®ãç·šéã§ããããã«ããŸãã |
expectedHash |
æ¿èªæžã¿ããªã·ãŒã¢ãŒãã£ãã¡ã¯ãã«å¯Ÿããä»»æã®ããã·ã¥ããã¯ã |
expectedAttestationHash |
æåŸã«åãå ¥ããããã¯ãªãŒã³ãªããªã·ãŒãã§ãã¯ã«å¯Ÿããä»»æã®ããã·ã¥ããã¯ã |
path |
ããªã·ãŒã¢ãŒãã£ãã¡ã¯ãã®ã¯ãŒã¯ã¹ããŒã¹çžå¯Ÿäœçœ®ã |
Plugin ãã€ã³ã¹ããŒã«ãããŸãŸã¯ãŒã¯ã¹ããŒã¹ã®ããªã·ãŒãã§ãã¯ãç¡å¹ã«ããã«ã¯ã
plugins.entries.policy.config.enabled ã false ã«èšå®ããŸãã
ããŒã«ã¡ã¿ããŒã¿èŠä»¶ã¯ãtools.requireMetadata ã䜿ã£ãŠ policy.jsonc ã«äœæããŸãã
ããšãã° ["risk", "sensitivity", "owner"] ã§ãã
ããªã·ãŒç¶æ ãåãå ¥ãã
JSON åºåã®äŸ:
{ "ok": true, "attestation": { "checkedAt": "2026-05-10T20:00:00.000Z", "policy": { "path": "policy.jsonc", "hash": "sha256:..." }, "workspace": { "scope": "policy", "hash": "sha256:..." }, "findingsHash": "sha256:...", "attestationHash": "sha256:..." }, "evidence": { "channels": [ { "id": "telegram", "provider": "telegram", "source": "oc://openclaw.config/channels/telegram", "enabled": false } ], "mcpServers": [ { "id": "docs", "transport": "stdio", "source": "oc://openclaw.config/mcp/servers/docs", "command": "npx" } ], "modelProviders": [ { "id": "openai", "source": "oc://openclaw.config/models/providers/openai" } ], "modelRefs": [ { "ref": "openai/gpt-5.5", "provider": "openai", "model": "gpt-5.5", "source": "oc://openclaw.config/agents/defaults/model" } ], "network": [ { "id": "browser-private-network", "source": "oc://openclaw.config/browser/ssrfPolicy/dangerouslyAllowPrivateNetwork", "value": false } ], "gatewayExposure": [ { "id": "gateway-bind", "kind": "bind", "source": "oc://openclaw.config/gateway/bind", "value": "loopback", "nonLoopback": false, "explicit": true } ], "agentWorkspace": [ { "id": "agents-defaults-workspace-access", "kind": "workspaceAccess", "source": "oc://openclaw.config/agents/defaults/sandbox/workspaceAccess", "scope": "defaults", "value": "ro", "sandboxMode": "all", "sandboxModeSource": "oc://openclaw.config/agents/defaults/sandbox/mode", "sandboxEnabled": true, "explicit": true }, { "id": "agents-defaults-tool-exec", "kind": "toolDeny", "source": "oc://openclaw.config/tools/deny", "scope": "defaults", "tool": "exec", "denied": true, "explicit": true } ], "secrets": [ { "id": "vault", "kind": "provider", "source": "oc://openclaw.config/secrets/providers/vault", "providerSource": "env" }, { "id": "oc://openclaw.config/models/providers/openai/apiKey", "kind": "input", "source": "oc://openclaw.config/models/providers/openai/apiKey", "provenance": "secretRef", "refSource": "env", "refProvider": "vault" } ], "authProfiles": [ { "id": "github", "source": "oc://openclaw.config/auth/profiles/github", "validMetadata": true, "provider": "github", "mode": "token" } ], "tools": [ { "id": "deploy", "source": "oc://TOOLS.md/tools/deploy", "line": 12, "risk": "critical", "sensitivity": "restricted", "capabilities": ["IRREVERSIBLE_EXTERNAL"] } ] }, "checksRun": 30, "checksSkipped": 0, "findings": []}ããªã·ãŒããã·ã¥ã¯ãäœæãããã«ãŒã«ææç©ãèå¥ããŸãããšããã³ã¹ãããã¯ã¯ãããªã·ãŒãã§ãã¯ã§äœ¿çšããã芳枬æžã¿ã®OpenClawç¶æ
ãèšé²ããŸããworkspace.hashå€ã¯ããã§ãã¯å¯Ÿè±¡ã¹ã³ãŒãã®ãã®ãšããã³ã¹ãã€ããŒããèå¥ããŸããæ€åºäºé
ããã·ã¥ã¯ããã§ãã¯ã«ãã£ãŠè¿ãããæ£ç¢ºãªæ€åºäºé
ã»ãããèå¥ããŸããcheckedAtã¯è©äŸ¡ãå®è¡ãããæå»ãèšé²ããŸãã蚌æããã·ã¥ã¯ãããªã·ãŒããã·ã¥ããšããã³ã¹ããã·ã¥ãæ€åºäºé
ããã·ã¥ãããã³çµæãã¯ãªãŒã³ã ã£ããã©ãããšããå®å®ãã䞻匵ãèå¥ããŸããåãããªã·ãŒç¶æ
ã§ç¹°ãè¿ããã§ãã¯ããå Žåã«åã蚌æãçæããããããæå³çã«checkedAtã¯å«ããŠããŸãããããããåãããŠããã®ããªã·ãŒãã§ãã¯ã®ç£æ»ã¿ãã«ã圢æããŸãã
åŸç¶ã®GatewayãŸãã¯ã¹ãŒããŒãã€ã¶ãŒãããªã·ãŒã䜿ã£ãŠã©ã³ã¿ã€ã ã¢ã¯ã·ã§ã³ããããã¯ãæ¿èªããŸãã¯æ³šéä»ãããå ŽåãæåŸã«ã¯ãªãŒã³ã ã£ãããªã·ãŒãã§ãã¯ã®èšŒæããã·ã¥ãèšé²ããå¿
èŠããããŸããcheckedAtã¯ç£æ»ãã°çšã«JSONåºåå
ã«æ®ããŸãããå®å®ãã蚌æããã·ã¥ã®äžéšã§ã¯ãããŸããã
ããªã·ãŒç¶æ ãåãå ¥ãããšãã¯ã次ã®ã©ã€ããµã€ã¯ã«ã䜿çšããŸãã
policy.jsoncãäœæãŸãã¯ã¬ãã¥ãŒããŸããopenclaw policy check --jsonãå®è¡ããŸãã- çµæãã¯ãªãŒã³ãªå Žåã
attestation.policy.hashãexpectedHashãšããŠèšé²ããŸãã attestation.attestationHashãexpectedAttestationHashãšããŠèšé²ããŸãã- CIãŸãã¯ãªãªãŒã¹ã²ãŒãã§
openclaw doctor --lintãåå®è¡ããŸãã
ããªã·ãŒã«ãŒã«ãæå³çã«å€æŽããå Žåã¯ãã¯ãªãŒã³ãªãã§ãã¯çµæãããåãå
¥ãæžã¿ã®äž¡æ¹ã®ããã·ã¥ãæŽæ°ããŸããã¯ãŒã¯ã¹ããŒã¹èšå®ãæå³çã«å€æŽããŠãããªã·ãŒãåããŸãŸã®å Žåãéåžžã¯expectedAttestationHashã®ã¿ãå€ãããŸãã
agents.workspaceã«ãŒã«ãæå¹åãŸãã¯ã¢ããã°ã¬ãŒããããšãã¯ãŒã¯ã¹ããŒã¹ããã·ã¥ãšèšŒæããã·ã¥ã«agentWorkspaceãšããã³ã¹ã远å ãããŸãããªãã¬ãŒã¿ãŒã¯æ°ãããšããã³ã¹ã確èªãããããã®ã«ãŒã«ãæå¹åããåŸã«åãå
¥ãæžã¿ã®èšŒæããã·ã¥ãæŽæ°ããå¿
èŠããããŸããããŒã«æ
å¢ã«ãŒã«ãæå¹åãŸãã¯ã¢ããã°ã¬ãŒããããšãåãæ¹æ³ã§toolPostureãšããã³ã¹ã远å ãããŸãã
openclaw policy watchã¯åããã§ãã¯ãç¹°ãè¿ãå®è¡ããçŸåšã®ãšããã³ã¹ãexpectedAttestationHashãšäžèŽããªããªã£ãå Žåã«å ±åããŸãã
openclaw policy watch --json1åã®ããªããè©äŸ¡ã ããå¿
èŠãªCIãŸãã¯ã¹ã¯ãªããã§ã¯ã--onceã䜿çšããŸãã--onceãæå®ããªãå Žåãã³ãã³ãã¯ããã©ã«ãã§2ç§ããšã«ããŒãªã³ã°ããŸããå¥ã®ééãéžã¶ã«ã¯--interval-msã䜿çšããŸãã
æ€åºäºé
ããªã·ãŒã¯çŸåšãæ¬¡ãæ€èšŒããŸãã
| ãã§ã㯠ID | æ€åºäºé |
|---|---|
policy/policy-jsonc-missing |
Policy ãæå¹ã ããpolicy.jsonc ããããŸããã |
policy/policy-jsonc-invalid |
Policy ãè§£æã§ããªãããäžæ£ãªåœ¢åŒã®ã«ãŒã«ãšã³ããªãå«ãŸããŠããŸãã |
policy/policy-hash-mismatch |
Policy ãèšå®æžã¿ã® expectedHash ãšäžèŽããŸããã |
policy/attestation-hash-mismatch |
çŸåšã® Policy 蚌æ ããæ¿èªæžã¿ã®èšŒæãšäžèŽããªããªã£ãŠããŸãã |
policy/policy-conformance-invalid |
ããŒã¹ã©ã€ã³ãŸãã¯ãã§ãã¯å¯Ÿè±¡ã® Policy ãã¡ã€ã«ã«ç¡å¹ãªæ¯èŒæ§æããããŸãã |
policy/policy-conformance-missing |
ãã§ãã¯å¯Ÿè±¡ã® Policy ãã¡ã€ã«ã«ãããŒã¹ã©ã€ã³ Policy ãã¡ã€ã«ã§å¿ èŠãªã«ãŒã«ããããŸããã |
policy/policy-conformance-weaker |
ãã§ãã¯å¯Ÿè±¡ã® Policy ãã¡ã€ã«ã«ãããŒã¹ã©ã€ã³ Policy ãã¡ã€ã«ãã匱ãå€ããããŸãã |
policy/channels-denied-provider |
æå¹ãªãã£ã³ãã«ããã£ã³ãã«æåŠã«ãŒã«ã«äžèŽããŠããŸãã |
policy/mcp-denied-server |
èšå®æžã¿ã® MCP ãµãŒããŒã Policy ã«ãã£ãŠæåŠãããŠããŸãã |
policy/mcp-unapproved-server |
èšå®æžã¿ã® MCP ãµãŒããŒãèš±å¯ãªã¹ãå€ã§ãã |
policy/models-denied-provider |
èšå®æžã¿ã®ã¢ãã«ãããã€ããŒãŸãã¯ã¢ãã«åç §ããæåŠããããããã€ããŒã䜿çšããŠããŸãã |
policy/models-unapproved-provider |
èšå®æžã¿ã®ã¢ãã«ãããã€ããŒãŸãã¯ã¢ãã«åç §ãèš±å¯ãªã¹ãå€ã§ãã |
policy/network-private-access-enabled |
Policy ãæåŠããŠãããšãã«ããã©ã€ããŒããããã¯ãŒã¯ SSRF ãšã¹ã±ãŒãããããæå¹ã§ãã |
policy/ingress-dm-policy-unapproved |
ãã£ã³ãã« DM Policy ã Policy èš±å¯ãªã¹ãå€ã§ãã |
policy/ingress-dm-scope-unapproved |
session.dmScope ããPolicy ã§èŠæ±ããã DM åé¢ã¹ã³ãŒããšäžèŽããŸããã |
policy/ingress-open-groups-denied |
Policy ããªãŒãã³ã°ã«ãŒãã®åä¿¡ãæåŠããŠããã®ã«ããã£ã³ãã«ã°ã«ãŒã Policy ã open ã§ãã |
policy/ingress-group-mention-required |
Policy ãã¡ã³ã·ã§ã³ã²ãŒããèŠæ±ããŠããã®ã«ããã£ã³ãã«ãŸãã¯ã°ã«ãŒããšã³ããªããããç¡å¹ã«ããŠããŸãã |
policy/gateway-non-loopback-bind |
Policy ãæåŠããŠãããšãã«ãGateway ã®ãã€ã³ããã¹ãã£ãŒãéã«ãŒãããã¯å ¬éãèš±å¯ããŠããŸãã |
policy/gateway-auth-disabled |
Policy ãèªèšŒãèŠæ±ããŠãããšãã«ãGateway èªèšŒãç¡å¹ã§ãã |
policy/gateway-rate-limit-missing |
Policy ãèŠæ±ããŠãããšãã«ãGateway èªèšŒã®ã¬ãŒãå¶éãã¹ãã£ãŒãæç€ºãããŠããŸããã |
policy/gateway-control-ui-insecure |
Gateway Control UI ã®å®å šã§ãªãå ¬éãã°ã«ãæå¹ã§ãã |
policy/gateway-tailscale-funnel |
Policy ãæåŠããŠãããšãã«ãGateway Tailscale Funnel å ¬éãæå¹ã§ãã |
policy/gateway-remote-enabled |
Policy ãæåŠããŠãããšãã«ãGateway ãªã¢ãŒãã¢ãŒããã¢ã¯ãã£ãã§ãã |
policy/gateway-http-endpoint-enabled |
Policy ã§æåŠãããŠããã®ã«ãGateway HTTP API ãšã³ããã€ã³ããæå¹ã§ãã |
policy/gateway-http-url-fetch-unrestricted |
Gateway HTTP URL ãã§ããå ¥åã«ãå¿ é ã® URL èš±å¯ãªã¹ãããããŸããã |
policy/agents-workspace-access-denied |
ãšãŒãžã§ã³ãã®ãµã³ãããã¯ã¹ã¢ãŒããŸãã¯ã¯ãŒã¯ã¹ããŒã¹ã¢ã¯ã»ã¹ã Policy èš±å¯ãªã¹ãå€ã§ãã |
policy/agents-tool-not-denied |
ãšãŒãžã§ã³ããŸãã¯ããã©ã«ãèšå®ããPolicy ã§å¿ èŠãªããŒã«ãæåŠããŠããŸããã |
policy/tools-profile-unapproved |
èšå®æžã¿ã®ã°ããŒãã«ãŸãã¯ãšãŒãžã§ã³ãå¥ããŒã«ãããã¡ã€ã«ãèš±å¯ãªã¹ãå€ã§ãã |
policy/tools-fs-workspace-only-required |
ãã¡ã€ã«ã·ã¹ãã ããŒã«ããã¯ãŒã¯ã¹ããŒã¹ã®ã¿ã®ãã¹ãã¹ãã£ãŒã§èšå®ãããŠããŸããã |
policy/tools-exec-security-unapproved |
Exec ã»ãã¥ãªãã£ã¢ãŒãã Policy èš±å¯ãªã¹ãå€ã§ãã |
policy/tools-exec-ask-unapproved |
Exec 確èªã¢ãŒãã Policy èš±å¯ãªã¹ãå€ã§ãã |
policy/tools-exec-host-unapproved |
Exec ãã¹ãã«ãŒãã£ã³ã°ã Policy èš±å¯ãªã¹ãå€ã§ãã |
policy/tools-elevated-enabled |
Policy ãæåŠããŠãããšãã«ãææ ŒããŒã«ã¢ãŒããæå¹ã§ãã |
policy/tools-also-allow-missing |
èšå®æžã¿ã® alsoAllow ãªã¹ãã«ãPolicy ã§å¿
èŠãªãšã³ããªããããŸããã |
policy/tools-also-allow-unexpected |
èšå®æžã¿ã® alsoAllow ãªã¹ãã«ãPolicy ã§æ³å®ãããŠããªããšã³ããªãå«ãŸããŠããŸãã |
policy/tools-required-deny-missing |
ã°ããŒãã«ãŸãã¯ãšãŒãžã§ã³ãå¥ããŒã«æåŠãªã¹ãã«ãå¿ é ã®æåŠããŒã«ãå«ãŸããŠããŸããã |
policy/sandbox-mode-unapproved |
ãµã³ãããã¯ã¹ã¢ãŒãã Policy èš±å¯ãªã¹ãå€ã§ãã |
policy/sandbox-backend-unapproved |
ãµã³ãããã¯ã¹ããã¯ãšã³ãã Policy èš±å¯ãªã¹ãå€ã§ãã |
policy/sandbox-container-posture-unobservable |
芳枬ã§ããªãããã¯ãšã³ãã«å¯ŸããŠãã³ã³ãããã¹ãã£ãŒã«ãŒã«ãæå¹ã§ãã |
policy/sandbox-container-host-network-denied |
ã³ã³ããããŒã¹ã®ãµã³ãããã¯ã¹ãŸãã¯ãã©ãŠã¶ãŒããã¹ããããã¯ãŒã¯ã¢ãŒãã䜿çšããŠããŸãã |
policy/sandbox-container-namespace-join-denied |
ã³ã³ããããŒã¹ã®ãµã³ãããã¯ã¹ãŸãã¯ãã©ãŠã¶ãŒãå¥ã®ã³ã³ããåå空éã«åå ããŠããŸãã |
policy/sandbox-container-mount-mode-required |
ã³ã³ããããŒã¹ã®ãµã³ãããã¯ã¹ãŸãã¯ãã©ãŠã¶ãŒã®ããŠã³ããèªã¿åãå°çšã§ã¯ãããŸããã |
policy/sandbox-container-runtime-socket-mount |
ã³ã³ããããŒã¹ã®ãµã³ãããã¯ã¹ãŸãã¯ãã©ãŠã¶ãŒã®ããŠã³ãããã³ã³ããã©ã³ã¿ã€ã ãœã±ãããå ¬éããŠããŸãã |
policy/sandbox-container-unconfined-profile |
Policy ãæåŠããŠãããšãã«ãã³ã³ãããµã³ãããã¯ã¹ãããã¡ã€ã«ãç¡å¶éã§ãã |
policy/sandbox-browser-cdp-source-range-missing |
Policy ãèŠæ±ããŠãããšãã«ããµã³ãããã¯ã¹ãã©ãŠã¶ãŒã® CDP ãœãŒã¹ç¯å²ããããŸããã |
policy/data-handling-redaction-disabled |
Policy ãèŠæ±ããŠãããšãã«ãæ©å¯ãã°ã®ãªãã¯ã·ã§ã³ãç¡å¹ã§ãã |
policy/data-handling-telemetry-content-capture |
Policy ãæåŠããŠãããšãã«ããã¬ã¡ããªãŒã®ã³ã³ãã³ããã£ããã£ãæå¹ã§ãã |
policy/data-handling-session-retention-not-enforced |
Policy ãèŠæ±ããŠãããšãã«ãã»ãã·ã§ã³ä¿æã¡ã³ããã³ã¹ã匷å¶ãããŠããŸããã |
policy/data-handling-session-transcript-memory-enabled |
Policy ãæåŠããŠãããšãã«ãã»ãã·ã§ã³ãã©ã³ã¹ã¯ãªããã®ã¡ã¢ãªãŒã€ã³ããã¯ã¹åãæå¹ã§ãã |
policy/secrets-unmanaged-provider |
èšå®ã® SecretRef ããsecrets.providers ã§å®£èšãããŠããªããããã€ããŒãåç
§ããŠããŸãã |
policy/secrets-denied-provider-source |
èšå®ã®ã·ãŒã¯ã¬ãããããã€ããŒãŸã㯠SecretRef ããPolicy ã§æåŠããããœãŒã¹ã䜿çšããŠããŸãã |
policy/secrets-insecure-provider |
Policy ãæåŠããŠãããšãã«ãã·ãŒã¯ã¬ãããããã€ããŒãå®å šã§ãªããã¹ãã£ãŒã«ãªããã€ã³ããŠããŸãã |
policy/auth-profile-invalid-metadata |
èšå®ã®èªèšŒãããã¡ã€ã«ã«ãæå¹ãªãããã€ããŒãŸãã¯ã¢ãŒãã¡ã¿ããŒã¿ããããŸããã |
policy/auth-profile-unapproved-mode |
èšå®ã®èªèšŒãããã¡ã€ã«ã¢ãŒãã Policy èš±å¯ãªã¹ãå€ã§ãã |
policy/exec-approvals-missing |
Policy ã exec-approvals.json ãèŠæ±ããŠããŸãããã¢ãŒãã£ãã¡ã¯ãããããŸããã |
policy/exec-approvals-invalid |
èšå®æžã¿ã® Exec æ¿èªã¢ãŒãã£ãã¡ã¯ããè§£æã§ããŸããã |
policy/exec-approvals-default-security-unapproved |
Exec æ¿èªã®ããã©ã«ãããPolicy èš±å¯ãªã¹ãå€ã®ã»ãã¥ãªãã£ã¢ãŒãã䜿çšããŠããŸãã |
policy/exec-approvals-agent-security-unapproved |
ãšãŒãžã§ã³ãå¥ã®æå¹ãª Exec æ¿èªã»ãã¥ãªãã£ã¢ãŒããèš±å¯ãªã¹ãå€ã§ãã |
policy/exec-approvals-auto-allow-skills-enabled |
Policy ãæåŠããŠãããšãã«ãExec æ¿èªãšãŒãžã§ã³ãã Skills CLI ãæé»çã«èªåèš±å¯ããŠããŸãã |
policy/exec-approvals-allowlist-missing |
æ¿èªèš±å¯ãªã¹ãã«ãPolicy ã§å¿ èŠãªãã¿ãŒã³ããããŸããã |
policy/exec-approvals-allowlist-unexpected |
æ¿èªèš±å¯ãªã¹ãã«ãPolicy ã§æ³å®ãããŠããªããã¿ãŒã³ãå«ãŸããŠããŸãã |
policy/tools-missing-risk-level |
管ç察象ããŒã«å®£èšã«ãªã¹ã¯ã¡ã¿ããŒã¿ããããŸããã |
policy/tools-unknown-risk-level |
管ç察象ããŒã«å®£èšãäžæãªãªã¹ã¯å€ã䜿çšããŠããŸãã |
policy/tools-missing-sensitivity-token |
管ç察象ããŒã«å®£èšã«æ©å¯åºŠã¡ã¿ããŒã¿ããããŸããã |
policy/tools-missing-owner |
管ç察象ããŒã«å®£èšã«ææè ã¡ã¿ããŒã¿ããããŸããã |
policy/tools-unknown-sensitivity-token |
管ç察象ããŒã«å®£èšãäžæãªæ©å¯åºŠå€ã䜿çšããŠããŸãã |
Policy ã®æ€åºäºé
ã«ã¯ãtarget ãš requirement ã®äž¡æ¹ãå«ããããšãã§ããŸããtarget ã¯ãæºæ ããŠããªãããšã芳枬ãããã¯ãŒã¯ã¹ããŒã¹å
ã®å¯Ÿè±¡ã§ããrequirement ã¯ããã®æ€åºäºé
ãçºçããããäœææžã¿ã® Policy ã«ãŒã«ã§ããçŸåšãã©ã¡ãã®å€ãã¢ãã¬ã¹ã§ãããé垞㯠oc:// ãã¹ã§ããããã£ãŒã«ãåã¯ã¢ãã¬ã¹åœ¢åŒã§ã¯ãªã Policy äžã®åœ¹å²ã衚ããŠããŸãã
JSON æ€åºäºé ã®äŸ:
{ "checkId": "policy/channels-denied-provider", "severity": "error", "message": "Channel 'telegram' uses denied provider 'telegram'.", "source": "policy", "path": "openclaw config", "ocPath": "oc://openclaw.config/channels/telegram", "target": "oc://openclaw.config/channels/telegram", "requirement": "oc://policy.jsonc/channels/denyRules/#0", "fixHint": "Telegram is not approved for this workspace."}ããŒã«æ€åºäºé ã®äŸ:
{ "checkId": "policy/tools-missing-risk-level", "severity": "error", "message": "TOOLS.md tool 'deploy' has no explicit risk classification.", "source": "policy", "path": "TOOLS.md", "line": 12, "ocPath": "oc://TOOLS.md/tools/deploy", "target": "oc://TOOLS.md/tools/deploy", "requirement": "oc://policy.jsonc/tools/requireMetadata"}MCP æ€åºäºé ã®äŸ:
{ "checkId": "policy/mcp-unapproved-server", "severity": "error", "message": "MCP server 'remote' is not in the policy allowlist.", "source": "policy", "path": "openclaw config", "ocPath": "oc://openclaw.config/mcp/servers/remote", "target": "oc://openclaw.config/mcp/servers/remote", "requirement": "oc://policy.jsonc/mcp/servers/allow"}ã¢ãã«ãããã€ããŒæ€åºäºé ã®äŸ:
{ "checkId": "policy/models-unapproved-provider", "severity": "error", "message": "Model ref 'anthropic/claude-sonnet-4.7' uses unapproved provider 'anthropic'.", "source": "policy", "path": "openclaw config", "ocPath": "oc://openclaw.config/agents/defaults/model/fallbacks/#0", "target": "oc://openclaw.config/agents/defaults/model/fallbacks/#0", "requirement": "oc://policy.jsonc/models/providers/allow"}ãããã¯ãŒã¯æ€åºäºé ã®äŸ:
{ "checkId": "policy/network-private-access-enabled", "severity": "error", "message": "Network setting 'browser-private-network' allows private-network access.", "source": "policy", "path": "openclaw config", "ocPath": "oc://openclaw.config/browser/ssrfPolicy/dangerouslyAllowPrivateNetwork", "target": "oc://openclaw.config/browser/ssrfPolicy/dangerouslyAllowPrivateNetwork", "requirement": "oc://policy.jsonc/network/privateNetwork/allow"}Gatewayå ¬éã®æ€åºäŸ:
{ "checkId": "policy/gateway-non-loopback-bind", "severity": "error", "message": "Gateway bind setting 'gateway-bind' permits non-loopback exposure.", "source": "policy", "path": "openclaw config", "ocPath": "oc://openclaw.config/gateway/bind", "target": "oc://openclaw.config/gateway/bind", "requirement": "oc://policy.jsonc/gateway/exposure/allowNonLoopbackBind"}ãšãŒãžã§ã³ãã¯ãŒã¯ã¹ããŒã¹ã®æ€åºäŸ:
{ "checkId": "policy/agents-workspace-access-denied", "severity": "error", "message": "agents.defaults sandbox workspaceAccess 'rw' is not allowed by policy.", "source": "policy", "path": "openclaw config", "ocPath": "oc://openclaw.config/agents/defaults/sandbox/workspaceAccess", "target": "oc://openclaw.config/agents/defaults/sandbox/workspaceAccess", "requirement": "oc://policy.jsonc/agents/workspace/allowedAccess"}修埩
doctor --lint ãš policy check ã¯èªã¿åãå°çšã§ãã
workspaceRepairs ãæç€ºçã«æå¹åãããŠããå Žåã«éããdoctor --fix ã¯ããªã·ãŒç®¡çäžã®ã¯ãŒã¯ã¹ããŒã¹èšå®ãç·šéããŸãããã®ãªããã€ã³ããªãå Žåãããªã·ãŒãã§ãã¯ã¯ä¿®åŸ©äºå®ã®å
容ãå ±åããèšå®ã¯å€æŽããŸããã
ãã®ããŒãžã§ã³ã§ã¯ãOpenClaw èšå®ã§æå¹åãããŠãããã®ã® channels.denyRules ã§æåŠãããŠãããã£ãã«ãã修埩ã«ãã£ãŠç¡å¹åã§ããŸããæå¹ãªæåŠã«ãŒã«ã¯èšå®æžã¿ãã£ãã«ããªãã«ã§ãããããããªã·ãŒãã¡ã€ã«ãã¬ãã¥ãŒããåŸã«ã®ã¿ workspaceRepairs ãæå¹åããŠãã ããã
{ "plugins": { "entries": { "policy": { "config": { "workspaceRepairs": true, }, }, }, },}çµäºã³ãŒã
| ã³ãã³ã | 0 |
1 |
2 |
|---|---|---|---|
policy check |
ãããå€ã«éããæ€åºäºé ã¯ãããŸããã | 1件以äžã®æ€åºäºé ããããå€ã«éããŸããã | åŒæ°ãŸãã¯ã©ã³ã¿ã€ã ã®å€±æã |
policy compare |
ããªã·ãŒãã¡ã€ã«ã¯ããŒã¹ã©ã€ã³ãšåç以äžã«å³æ Œã§ãã | ããªã·ãŒãã¡ã€ã«ãç¡å¹ãæ¬ èœããŸãã¯ããŒã¹ã©ã€ã³ã«ãŒã«ãã匱ãã§ãã | åŒæ°ãŸãã¯ã©ã³ã¿ã€ã ã®å€±æã |
policy watch |
æ€åºäºé ã¯ãªããæ¿èªæžã¿ããã·ã¥ã¯ææ°ã§ãã | æ€åºäºé ãååšããããæ¿èªæžã¿ã¢ãã¹ããŒã·ã§ã³ãå€ããªã£ãŠããŸãã | åŒæ°ãŸãã¯ã©ã³ã¿ã€ã ã®å€±æã |