name: browser-recover description: Recover the local Chromium/Chrome environment when browser tool calls fail. Use when encountering (1) Browser startup failures, (2) CDP connection errors (Target closed, ECONNREFUSED, timeout), (3) Stale browser processes blocking new instances, (4) Port conflicts on 9222/18800, (5) Browser page freezes causing subsequent tool calls to fail. Automatically kills stale processes, clears lock files, releases ports, and retries the original browser task once.
Automated recovery for OpenClaw browser environment failures.
When a browser tool call fails, follow this workflow:
scripts/check_state.sh to inspect current statescripts/recover.sh to clean up| Error Pattern | Likely Cause | Recovery Action |
|---|---|---|
Target closed |
Stale CDP connection | recover.sh --kill-processes |
ECONNREFUSED on port 9222/18800 |
Port conflict | recover.sh --clear-ports |
timeout during browser.start |
Lock file conflict | recover.sh --clear-locks |
| Multiple chromium processes | Zombie processes | recover.sh --full |
Profile in use |
Stale lock files | recover.sh --clear-locks |
Diagnose browser environment without making changes.
Usage:
bash scripts/check_state.sh
Output: - Browser process count and PIDs - Port usage status (9222, 18800, custom ports) - Lock file locations - Recommendation (clean or no action needed)
Clean up stale browser resources.
Usage:
# Full recovery (default)
bash scripts/recover.sh
# Specific actions
bash scripts/recover.sh --kill-processes
bash scripts/recover.sh --clear-ports
bash scripts/recover.sh --clear-locks
# Explicit full recovery
bash scripts/recover.sh --full
Actions: 1. Kills stale browser processes (chromium, chrome variants) 2. Clears port conflicts (9222, 18800, configured ports) 3. Removes lock files (SingletonLock, SingletonSocket, SingletonCookie) 4. Clears cache directories (Cache, Code Cache, GPUCache) 5. Waits 2 seconds for resources to release
Configuration:
- Reads ~/.openclaw/config/openclaw.json for browser settings
- Falls back to defaults if config not found
- See references/configuration.md for details
Session-level tracking: - Maximum 2 recovery attempts per session - Track failures to prevent infinite loops - Stop after 2nd failure and escalate to human
Implementation:
Attempt 1: browser fails → diagnose → recover → retry → success ✓
Attempt 2: browser fails → diagnose → recover → retry → fails → STOP
When to stop: - 2nd recovery in same session fails - Error is not browser-environment related - System-level issues detected (permissions, resources) - User explicitly requests manual intervention
DO:
- Only clean OpenClaw-managed browser instances
- Verify process ownership before killing
- Check profile path matches ~/.openclaw/browser
- Log all actions to stderr for OpenClaw to capture
DON'T:
- Kill user's personal browser processes
- Delete user profile directories (~/.config/chrome, etc.)
- Use kill -9 without verification
- Restart entire system
- Clean up other agents' browser instances without isolation
See references/safety.md for detailed guidelines.
If recovery fails or behaves unexpectedly:
check_state.sh to diagnose~/.openclaw/logs/這個技能的最新版本可以在7w4.net小蔥技能站找到。
~/.openclaw/config/openclaw.jsonScripts automatically read OpenClaw config for:
- Browser debug port (browser.debugPort)
- Profile directory (browser.userDataDir)
See references/configuration.md for: - Custom port configuration - Multiple instance setup - Platform-specific notes - Environment variables
User: "Open https://example.com"
Assistant: [calls browser tool]
Error: "ECONNREFUSED on port 9222"
Assistant: Detected port conflict. Running recovery...
[runs check_state.sh]
[runs recover.sh --clear-ports]
[waits 2 seconds]
[retries browser tool]
Success: Browser opened https://example.com