Gateway Guard
Ensures OpenClaw gateway auth consistency. Use when checking or fixing gateway token/password mismatch, device_token_mismatch errors, or before delegating to...
技能说明
name: gateway-guard displayName: Gateway Guard description: Ensures OpenClaw gateway auth consistency and can auto-prompt "continue" when a run error (Unhandled stop reason: error) appears in gateway logs. Use when checking or fixing gateway token/password mismatch, device_token_mismatch errors, or before delegating to sub-agents.
Gateway Guard
Description
Ensures OpenClaw gateway auth consistency and can auto-prompt "continue" when a run error (Unhandled stop reason: error) appears in gateway logs. Use when checking or fixing gateway token/password mismatch, device_token_mismatch errors, or before delegating to sub-agents.
Ensures OpenClaw gateway auth consistency and can auto-prompt "continue" when a run error (Unhandled stop reason: error) appears in gateway logs. Use when checking or fixing gateway token/password mismatch, device_token_mismatch errors, or before delegating to sub-agents.
Gateway Guard
Keeps OpenClaw gateway authentication in sync with openclaw.json. Use when the user or agent sees gateway auth issues, device_token_mismatch, or needs to ensure the gateway is running with the correct token/password before spawning sub-agents.
Metadata: This skill uses always: false in _meta.json. It is not forced into every agent run; the orchestrator invokes it when needed (e.g. before delegating to sub-agents). Optional persistence (LaunchAgent) is installed only when you run the install scripts; see "Before installing" below.
Before installing
- Backup
openclaw.json— The script may add or correctgateway.auth(token/password) when missing or wrong. Make a copy before runningensure --apply. - Test read-only first — Run
python3 scripts/gateway_guard.py status --jsonandpython3 scripts/gateway_guard.py ensure --json(without--apply) to see what it would do before allowing restarts or config writes. - Understand
continuedelivery — The watcher can runopenclaw agent --message continue --deliverwhen a run error appears ingateway.log. Confirm that automatically sending that message is acceptable in your environment. - LaunchAgent is optional — Persistence (watcher every 30s) is installed only if you run
install_watcher.sh. The installer copies the plist from the skill directory into~/Library/LaunchAgentsand runslaunchctl load; only run it if you accept that. The plist is included in this package:scripts/com.openclaw.gateway-guard.watcher.plist(andscripts/com.openclaw.gateway-guard.continue-on-error.plist). EnsureOPENCLAW_HOMEandOPENCLAW_BINresolve to your intended paths before installing the watcher. - Try in a non-production environment first if you are unsure.
Package contents (file manifest)
Included in this skill so installers do not error:
scripts/gateway_guard.py— Main script (status, ensure, continue-on-error, watch).scripts/install_watcher.sh— Installs the single combined LaunchAgent (token sync + continue-on-error).scripts/install_continue_on_error.sh— Redirects toinstall_watcher.sh.scripts/com.openclaw.gateway-guard.watcher.plist— LaunchAgent plist template (install_watcher.sh copies and substitutes paths).scripts/com.openclaw.gateway-guard.continue-on-error.plist— Legacy plist (optional; install_watcher.sh replaces with the combined watcher).
Usage
- User or logs report "Gateway auth issue", "device_token_mismatch", or "unauthorized"
- Before running the router and
sessions_spawn(orchestrator flow): check gateway status first - After installing or updating OpenClaw: verify gateway and config match
- When the TUI disconnects or won't connect: fix auth and restart gateway
- Run error (Unhandled stop reason: error): run
continue-on-error --loop(e.g. via LaunchAgent or cron) so the guard auto-sends "continue" to the agent when this appears ingateway.log
python3 <skill-dir>/scripts/gateway_guard.py status [--json]
python3 <skill-dir>/scripts/gateway_guard.py ensure [--apply] [--wait] [--json]
python3 <skill-dir>/scripts/ensure_gateway_then.sh [command ...]
python3 <skill-dir>/scripts/gateway_guard.py continue-on-error [--once] [--loop] [--interval 30] [--json]
- status — Report whether the running gateway's auth matches
openclaw.json. Exit 0 if ok, 1 if mismatch. - ensure — Same check; if mismatch and
--apply, restart the gateway with credentials from config. Writesgateway.authtoopenclaw.jsononly when it is missing or wrong (never overwrites correct config). Use--waitafter--applyto block until the gateway port is open (up to 30s), so clients can connect immediately after. - ensure_gateway_then.sh — Detect and connect automatically: ensures the gateway is running (starts it if needed, waits for port), then runs your command. Example:
ensure_gateway_then.sh openclaw tuiorensure_gateway_then.sh(just ensure and wait). - continue-on-error — When
gateway.logcontains Unhandled stop reason: error (run error), send continue to the agent viaopenclaw agent --message continue --deliver. Use--onceto check once and exit, or--loopto run every--intervalseconds. Cooldown 90s between triggers. State:logs/gateway-guard.continue-state.json. - watch — Single combined daemon (one LaunchAgent). Each run: (0) token sync —
ensure --applyso gateway auth matches config (prevents device_token_mismatch); (1) gateway back → what-just-happened summary; (2) continue-on-error check. Install one daemon:bash <skill-dir>/scripts/install_watcher.sh(orinstall_continue_on_error.sh). This unloads the old separate what-just-happened and continue-on-error LaunchAgents and loadscom.openclaw.gateway-guard.watcherso users only need one. For periodic gateway recovery (check every 10s, restart if not ok), use the separate gateway-watchdog skill.
Behavior
- Reads
openclaw.json→gateway.auth(token or password) andgateway.port. - Compares with the process listening on that port (and optional guard state file).
- If
ensure --apply: restarts gateway viaopenclaw gateway stopthenopenclaw gateway --port N --auth token|password --token|--password SECRET. - If token is missing in config (token mode only): generates a token, writes it to config once, then proceeds. Does not overwrite config when it is already correct.
- continue-on-error: Tails
OPENCLAW_HOME/logs/gateway.logfor the stringUnhandled stop reason: error. When found (and not in cooldown), runsopenclaw agent --message continue --deliverso the agent receives "continue" and can resume. Runinstall_continue_on_error.shto install a LaunchAgent that checks every 30s. If the error appears in the TUI but the watcher never triggers, the gateway may not be writing run errors togateway.log— ensure run/stream errors are logged there.
JSON output (for orchestration)
- status --json / ensure --json:
ok,secretMatchesConfig,running,pid,reason,recommendedAction,configPath,authMode,gatewayPort. When not ok,recommendedActionis "run gateway_guard.py ensure --apply and restart client session".
Requirements
- OpenClaw
openclaw.jsonwithgateway.auth(modetokenorpassword) andgateway.port. - CLI / system:
openclawCLI on PATH (forensure --applyand continue-on-error);lsofandps(macOS/Unix);launchctlon macOS when using the LaunchAgent install scripts. - Environment (optional):
OPENCLAW_HOME— OpenClaw home directory (default:~/.openclaw).OPENCLAW_BIN— Path or name ofopenclawbinary (default:openclaw).
Privileged actions (what you accept)
This skill may: read and modify openclaw.json (including writing gateway.auth when missing or wrong); write state and log files under OPENCLAW_HOME/logs/; restart the gateway via the OpenClaw CLI; and, if the watcher is installed, invoke openclaw agent --message continue --deliver automatically when a run error is detected. These are privileged local actions; run only if you accept them.
如何使用「Gateway Guard」?
- 打开小龙虾AI(Web 或 iOS App)
- 点击上方「立即使用」按钮,或在对话框中输入任务描述
- 小龙虾AI 会自动匹配并调用「Gateway Guard」技能完成任务
- 结果即时呈现,支持继续对话优化