Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

openclaw security audit emits structured findings keyed by checkId. This page is the reference catalog for those IDs. For the high-level threat model and hardening guidance, see Security. High-signal checkId values you will most likely see in real deployments (not exhaustive):
checkIdSeverityWhy it mattersPrimary fix key/pathAuto-fix
fs.state_dir.perms_world_writablecriticalOther users/processes can modify full OpenClaw statefilesystem perms on ~/.openclawyes
fs.state_dir.perms_group_writablewarnGroup users can modify full OpenClaw statefilesystem perms on ~/.openclawyes
fs.state_dir.perms_readablewarnState dir is readable by othersfilesystem perms on ~/.openclawyes
fs.state_dir.symlinkwarnState dir target becomes another trust boundarystate dir filesystem layoutno
fs.config.perms_writablecriticalOthers can change auth/tool policy/configfilesystem perms on ~/.openclaw/openclaw.jsonyes
fs.config.symlinkwarnSymlinked config files are unsupported for writes and add another trust boundaryreplace with a regular config file or point OPENCLAW_CONFIG_PATH at the real fileno
fs.config.perms_group_readablewarnGroup users can read config tokens/settingsfilesystem perms on config fileyes
fs.config.perms_world_readablecriticalConfig can expose tokens/settingsfilesystem perms on config fileyes
fs.config_include.perms_writablecriticalConfig include file can be modified by othersinclude-file perms referenced from openclaw.jsonyes
fs.config_include.perms_group_readablewarnGroup users can read included secrets/settingsinclude-file perms referenced from openclaw.jsonyes
fs.config_include.perms_world_readablecriticalIncluded secrets/settings are world-readableinclude-file perms referenced from openclaw.jsonyes
fs.auth_profiles.perms_writablecriticalOthers can inject or replace stored model credentialsagents/<agentId>/agent/auth-profiles.json permsyes
fs.auth_profiles.perms_readablewarnOthers can read API keys and OAuth tokensagents/<agentId>/agent/auth-profiles.json permsyes
fs.credentials_dir.perms_writablecriticalOthers can modify channel pairing/credential statefilesystem perms on ~/.openclaw/credentialsyes
fs.credentials_dir.perms_readablewarnOthers can read channel credential statefilesystem perms on ~/.openclaw/credentialsyes
fs.sessions_store.perms_readablewarnOthers can read session transcripts/metadatasession store permsyes
fs.log_file.perms_readablewarnOthers can read redacted-but-still-sensitive logsgateway log file permsyes
fs.synced_dirwarnState/config in iCloud/Dropbox/Drive broadens token/transcript exposuremove config/state off synced foldersno
gateway.bind_no_authcriticalRemote bind without shared secretgateway.bind, gateway.auth.*no
gateway.loopback_no_authcriticalReverse-proxied loopback may become unauthenticatedgateway.auth.*, proxy setupno
gateway.trusted_proxies_missingwarnReverse-proxy headers are present but not trustedgateway.trustedProxiesno
gateway.http.no_authwarn/criticalGateway HTTP APIs reachable with auth.mode="none"gateway.auth.mode, gateway.http.endpoints.*no
gateway.http.session_key_override_enabledinfoHTTP API callers can override sessionKeygateway.http.allowSessionKeyOverrideno
gateway.tools_invoke_http.dangerous_allowwarn/criticalRe-enables dangerous tools over HTTP APIgateway.tools.allowno
gateway.nodes.allow_commands_dangerouswarn/criticalEnables high-impact node commands (camera/screen/contacts/calendar/SMS)gateway.nodes.allowCommandsno
gateway.nodes.deny_commands_ineffectivewarnPattern-like deny entries do not match shell text or groupsgateway.nodes.denyCommandsno
gateway.tailscale_funnelcriticalPublic internet exposuregateway.tailscale.modeno
gateway.tailscale_serveinfoTailnet exposure is enabled via Servegateway.tailscale.modeno
gateway.control_ui.allowed_origins_requiredcriticalNon-loopback Control UI without explicit browser-origin allowlistgateway.controlUi.allowedOriginsno
gateway.control_ui.allowed_origins_wildcardwarn/criticalallowedOrigins=["*"] disables browser-origin allowlistinggateway.controlUi.allowedOriginsno
gateway.control_ui.host_header_origin_fallbackwarn/criticalEnables Host-header origin fallback (DNS rebinding hardening downgrade)gateway.controlUi.dangerouslyAllowHostHeaderOriginFallbackno
gateway.control_ui.insecure_authwarnInsecure-auth compatibility toggle enabledgateway.controlUi.allowInsecureAuthno
gateway.control_ui.device_auth_disabledcriticalDisables device identity checkgateway.controlUi.dangerouslyDisableDeviceAuthno
gateway.real_ip_fallback_enabledwarn/criticalTrusting X-Real-IP fallback can enable source-IP spoofing via proxy misconfiggateway.allowRealIpFallback, gateway.trustedProxiesno
gateway.token_too_shortwarnShort shared token is easier to brute forcegateway.auth.tokenno
gateway.auth_no_rate_limitwarnExposed auth without rate limiting increases brute-force riskgateway.auth.rateLimitno
gateway.trusted_proxy_authcriticalProxy identity now becomes the auth boundarygateway.auth.mode="trusted-proxy"no
gateway.trusted_proxy_no_proxiescriticalTrusted-proxy auth without trusted proxy IPs is unsafegateway.trustedProxiesno
gateway.trusted_proxy_no_user_headercriticalTrusted-proxy auth cannot resolve user identity safelygateway.auth.trustedProxy.userHeaderno
gateway.trusted_proxy_no_allowlistwarnTrusted-proxy auth accepts any authenticated upstream usergateway.auth.trustedProxy.allowUsersno
gateway.trusted_proxy_allow_loopbackwarnTrusted-proxy auth accepts explicitly allowed loopback proxy sourcesgateway.auth.trustedProxy.allowLoopbackno
gateway.probe_auth_secretref_unavailablewarnDeep probe could not resolve auth SecretRefs in this command pathdeep-probe auth source / SecretRef availabilityno
gateway.probe_failedwarn/criticalLive Gateway probe failedgateway reachability/authno
discovery.mdns_full_modewarn/criticalmDNS full mode advertises cliPath/sshPort metadata on local networkdiscovery.mdns.mode, gateway.bindno
config.insecure_or_dangerous_flagswarnAny insecure/dangerous debug flags enabledmultiple keys (see finding detail)no
config.secrets.gateway_password_in_configwarnGateway password is stored directly in configgateway.auth.passwordno
config.secrets.hooks_token_in_configwarnHook bearer token is stored directly in confighooks.tokenno
hooks.token_reuse_gateway_tokencriticalHook ingress token also unlocks Gateway authhooks.token, gateway.auth.tokenno
hooks.token_too_shortwarnEasier brute force on hook ingresshooks.tokenno
hooks.default_session_key_unsetwarnHook agent runs fan out into generated per-request sessionshooks.defaultSessionKeyno
hooks.allowed_agent_ids_unrestrictedwarn/criticalAuthenticated hook callers may route to any configured agenthooks.allowedAgentIdsno
hooks.request_session_key_enabledwarn/criticalExternal caller can choose sessionKeyhooks.allowRequestSessionKeyno
hooks.request_session_key_prefixes_missingwarn/criticalNo bound on external session key shapeshooks.allowedSessionKeyPrefixesno
hooks.path_rootcriticalHook path is /, making ingress easier to collide or misroutehooks.pathno
hooks.installs_unpinned_npm_specswarnHook install records are not pinned to immutable npm specshook install metadatano
hooks.installs_missing_integritywarnHook install records lack integrity metadatahook install metadatano
hooks.installs_version_driftwarnHook install records drift from installed packageshook install metadatano
logging.redact_offwarnSensitive values leak to logs/statuslogging.redactSensitiveyes
browser.control_invalid_configwarnBrowser control config is invalid before runtimebrowser.*no
browser.control_no_authcriticalBrowser control exposed without token/password authgateway.auth.*no
browser.remote_cdp_httpwarnRemote CDP over plain HTTP lacks transport encryptionbrowser profile cdpUrlno
browser.remote_cdp_private_hostwarnRemote CDP targets a private/internal hostbrowser profile cdpUrl, browser.ssrfPolicy.*no
sandbox.docker_config_mode_offwarnSandbox Docker config present but inactiveagents.*.sandbox.modeno
sandbox.bind_mount_non_absolutewarnRelative bind mounts can resolve unpredictablyagents.*.sandbox.docker.binds[]no
sandbox.dangerous_bind_mountcriticalSandbox bind mount targets blocked system, credential, or Docker socket pathsagents.*.sandbox.docker.binds[]no
sandbox.dangerous_network_modecriticalSandbox Docker network uses host or container:* namespace-join modeagents.*.sandbox.docker.networkno
sandbox.dangerous_seccomp_profilecriticalSandbox seccomp profile weakens container isolationagents.*.sandbox.docker.securityOptno
sandbox.dangerous_apparmor_profilecriticalSandbox AppArmor profile weakens container isolationagents.*.sandbox.docker.securityOptno
sandbox.browser_cdp_bridge_unrestrictedwarnSandbox browser bridge is exposed without source-range restrictionsandbox.browser.cdpSourceRangeno
sandbox.browser_container.non_loopback_publishcriticalExisting browser container publishes CDP on non-loopback interfacesbrowser sandbox container publish configno
sandbox.browser_container.hash_label_missingwarnExisting browser container predates current config-hash labelsopenclaw sandbox recreate --browser --allno
sandbox.browser_container.hash_epoch_stalewarnExisting browser container predates current browser config epochopenclaw sandbox recreate --browser --allno
tools.exec.host_sandbox_no_sandbox_defaultswarnexec host=sandbox fails closed when sandbox is offtools.exec.host, agents.defaults.sandbox.modeno
tools.exec.host_sandbox_no_sandbox_agentswarnPer-agent exec host=sandbox fails closed when sandbox is offagents.list[].tools.exec.host, agents.list[].sandbox.modeno
tools.exec.security_full_configuredwarn/criticalHost exec is running with security="full"tools.exec.security, agents.list[].tools.exec.securityno
tools.exec.fs_tools_disabled_but_exec_enabledwarnFilesystem tool policy does not make shell execution read-onlytools.deny, agents.list[].tools.deny, agents.*.sandbox.workspaceAccessno
tools.exec.auto_allow_skills_enabledwarnExec approvals trust skill bins implicitly~/.openclaw/exec-approvals.jsonno
tools.exec.allowlist_interpreter_without_strict_inline_evalwarnInterpreter allowlists permit inline eval without forced reapprovaltools.exec.strictInlineEval, agents.list[].tools.exec.strictInlineEval, exec approvals allowlistno
tools.exec.safe_bins_interpreter_unprofiledwarnInterpreter/runtime bins in safeBins without explicit profiles broaden exec risktools.exec.safeBins, tools.exec.safeBinProfiles, agents.list[].tools.exec.*no
tools.exec.safe_bins_broad_behaviorwarnBroad-behavior tools in safeBins weaken the low-risk stdin-filter trust modeltools.exec.safeBins, agents.list[].tools.exec.safeBinsno
tools.exec.safe_bin_trusted_dirs_riskywarnsafeBinTrustedDirs includes mutable or risky directoriestools.exec.safeBinTrustedDirs, agents.list[].tools.exec.safeBinTrustedDirsno
skills.workspace.symlink_escapewarnWorkspace skills/**/SKILL.md resolves outside workspace root (symlink-chain drift)workspace skills/** filesystem stateno
plugins.extensions_no_allowlistwarnPlugins are installed without an explicit plugin allowlistplugins.allowlistno
plugins.installs_unpinned_npm_specswarnPlugin index records are not pinned to immutable npm specsplugin install metadatano
plugins.installs_missing_integritywarnPlugin index records lack integrity metadataplugin install metadatano
plugins.installs_version_driftwarnPlugin index records drift from installed packagesplugin install metadatano
plugins.code_safetywarn/criticalPlugin code scan found suspicious or dangerous patternsplugin code / install sourceno
plugins.code_safety.entry_pathwarnPlugin entry path points into hidden or node_modules locationsplugin manifest entryno
plugins.code_safety.entry_escapecriticalPlugin entry escapes the plugin directoryplugin manifest entryno
plugins.code_safety.scan_failedwarnPlugin code scan could not completeplugin path / scan environmentno
skills.code_safetywarn/criticalSkill installer metadata/code contains suspicious or dangerous patternsskill install sourceno
skills.code_safety.scan_failedwarnSkill code scan could not completeskill scan environmentno
security.exposure.open_channels_with_execwarn/criticalShared/public rooms can reach exec-enabled agentschannels.*.dmPolicy, channels.*.groupPolicy, tools.exec.*, agents.list[].tools.exec.*no
security.exposure.open_groups_with_elevatedcriticalOpen groups + elevated tools create high-impact prompt-injection pathschannels.*.groupPolicy, tools.elevated.*no
security.exposure.open_groups_with_runtime_or_fscritical/warnOpen groups can reach command/file tools without sandbox/workspace guardschannels.*.groupPolicy, tools.profile/deny, tools.fs.workspaceOnly, agents.*.sandbox.modeno
security.trust_model.multi_user_heuristicwarnConfig looks multi-user while gateway trust model is personal-assistantsplit trust boundaries, or shared-user hardening (sandbox.mode, tool deny/workspace scoping`)no
tools.profile_minimal_overriddenwarnAgent overrides bypass global minimal profileagents.list[].tools.profileno
plugins.tools_reachable_permissive_policywarnExtension tools reachable in permissive contextstools.profile + tool allow/denyno
models.legacywarnLegacy model families are still configuredmodel selectionno
models.weak_tierwarnConfigured models are below current recommended tiersmodel selectionno
models.small_paramscritical/infoSmall models + unsafe tool surfaces raise injection riskmodel choice + sandbox/tool policyno
summary.attack_surfaceinfoRoll-up summary of auth, channel, tool, and exposure posturemultiple keys (see finding detail)no