pbakaus/impeccable · warning

[impeccable] The helper already answered this agent target…

Error message

[impeccable] The helper already answered this agent target; clearing session 

What it means

The in-page live-mode helper (live-browser.js) detected that an in-flight session's agent target had already been answered, so it logs this warning, marks the session handled, tears down the session chrome, and shows a toast telling the user to pick a new element. It is a deliberate cleanup path for superseded/stale sessions (abandonSupersededGo), not a crash.

Solutions

  1. No action needed for correctness: the stale session is auto-cleared; pick an element again to start a fresh session per the toast.
  2. If it recurs on every request, reload the page to resync page-side session state with the helper.
  3. If it is caused by client retries, check the agent/driver for duplicate sends of the same target and remove the retry.

Example fix

// before: driver re-sends for an already-answered target
await sendGo(sessionId); await sendGo(sessionId);
// after: send once per session, or check handled state first
if (!isSessionHandled(sessionId)) await sendGo(sessionId);
Defensive patterns

Strategy: type-guard

Validate before calling

if (isSessionHandled(sessionId) || sessionId !== currentSessionId) return; // skip duplicate send

Type guard

function canSendGo(sessionId) { return sessionId === currentSessionId && !handledSessions.has(sessionId); }

Prevention

When it happens

Trigger: A `go` (send) response arrives for a sessionId that the helper already resolved for the same agent target — e.g. the agent answered twice, the page reconnected and re-sent for a handled target, or the user re-triggered an element whose session was already completed.

Common situations: Double-clicking or re-invoking a live request on an element that was already processed; a live-mode client retrying after a slow response; the extension/overlay and page state getting out of sync after a reload mid-session.

Understand the failure class

Background: "Invalid state transition" errors: "status must be X, actually Y", "already rejected/charging/uninstalled", "cannot ... while running" — what they mean when a library rejects your call — this error's family across 31 libraries.

Related errors


AI-assisted analysis of pbakaus/impeccable@f2c7051853 (2026-09-16). Data as JSON: /api/errors/191e415876e11292. Report an issue: GitHub.

Appendix: source

Thrown at skill/scripts/live-browser.js:7837

      if (body.error === 'unknown_session' && msg.type === 'checkpoint'
          && msg.id && msg.id === currentSessionId) {
        abandonForeignSession(msg.id);
        return null;
      }
      return handleFailure(new Error(body.error || ('HTTP ' + res.status + ' ' + res.statusText)));
    }).catch(handleFailure);

    if (msg.type === 'generate' || msg.type === 'steer') {
      const creation = doSend();
      sessionCreationGate = creation.then(() => {}, () => {});
      return creation;
    }
    return sessionCreationGate.then(doSend);
  }

  function abandonSupersededGo(sessionId) {
    if (sessionId !== currentSessionId) return;
    console.warn('[impeccable] The helper already answered this agent target; clearing session ' + sessionId + '.');
    markSessionHandled();
    cleanup({ instantChrome: true });
    showToast('The helper already answered this request, so this session was cleared. Pick an element to start fresh.', 6000);
  }

  let abandonedForeignSessionId = null;
  function abandonForeignSession(sessionId) {
    if (abandonedForeignSessionId === sessionId || sessionId !== currentSessionId) return;
    abandonedForeignSessionId = sessionId;
    console.warn('[impeccable] The live server has no record of session ' + sessionId + '; clearing stale local state.');
    markSessionHandled();
    cleanup({ instantChrome: true });
    showToast('A saved live session belonged to a different project, so it was cleared. Pick an element to start fresh.', 6000);
  }

  function checkpointPayload(reason) {
    return {
      type: 'checkpoint',

View on GitHub (pinned to f2c7051853)