ClawKit Logo
ClawKitReliability Toolkit

Fix: Error โ€” tab not found

CDP Target Closed or Lost

OpenClaw opened a browser tab and got a CDP target ID. By the time the next action ran, that tab was gone โ€” closed, crashed, or navigated in a way that changed its target identity.

Browser automation in OpenClaw works by connecting to specific browser tab targets via CDP. If the tab closes or crashes between steps โ€” even briefly โ€” the target ID becomes invalid and you get Error: tab not found. The fix depends on why the tab disappeared.

Next Step

Fix now, then reduce repeat incidents

If this issue keeps coming back, validate your setup in Doctor first, then harden your config.

The Error

Error: tab not found
BrowserError: Target closed โ€” tab not found for targetId: T:xxx
Error: page.goto: Target page, context or browser has been closed
Can't reach the OpenClaw browser control service (timed out after 15000ms)

Fix A: Switch to Persistent Profile Mode (Most Reliable)

OpenClaw has two browser modes: relay (connects to Chrome via existing remote debug port) and openclaw (persistent profile with its own managed Chrome instance). Relay mode is more likely to lose tab targets because it doesn't control the browser lifecycle.

Switch to persistent profile mode in your config:

openclaw.json โ€” Persistent Browser Profile
{
  "browser": {
    "profile": "openclaw",
    "headless": false
  }
}

In openclaw profile mode, OpenClaw manages its own Chrome instance. You'll see a separate Chrome window open when the first browser skill runs. This window must stay open โ€” closing it will cause tab not found on the next action.

Fix B: Increase Tab Action Timeout

Sometimes the tab is still there but the action fires before the page has finished rendering or before a popup has resolved. Increasing the timeout gives OpenClaw more time to locate the target:

openclaw.json โ€” Browser Timeout
{
  "browser": {
    "profile": "openclaw",
    "actionTimeout": 30000,
    "navigationTimeout": 60000
  }
}

actionTimeout is for individual actions (click, type, snapshot). navigationTimeout is for page loads and redirects. Both default to 15 seconds, which is too short for slow sites.

Fix C: Handle Sites That Open New Tabs

Some sites open links in new tabs. When OpenClaw clicks a link that spawns a new tab, the original tab's target ID is no longer where the content is. The agent must follow the new tab.

If you're writing a skill that clicks outbound links, instruct the agent explicitly:

Skill instruction โ€” handle new tab
// In your skill prompt:
"After clicking the link, wait for any new tab to open and switch focus to it.
Do not act on the original tab after navigation."

Use target="_self" links where possible

If you control the site, avoid target="_blank" on links the agent will follow

Instruct the agent to check for new tabs

Add "check if a new tab opened" to your skill prompt before the next action

Use snapshot to verify the current page

Run a snapshot after navigation to confirm the agent is on the right target

Fix D: Verify the Browser Control Service Is Running

The browser control service must be active for any browser skill to work. Check its status:

Check browser control service
openclaw logs --follow | grep -i 'browser control\\|cdp\\|tab'

You should see: Browser control service ready (profiles=1). If not, restart the gateway:

Restart gateway
openclaw gateway restart

Still Happening?

Run the Doctor

npx clawkit-doctor@latest

Checks browser control service status, CDP connectivity, and profile configuration.

Did this guide solve your problem?