{"record":{"id":"0a138b1a90875cdc","repo":"paperclipai/paperclip","slug":"workspace-login-handoff-unavailable","errorCode":"workspace_login_handoff_unavailable","errorMessage":"workspace_login_handoff_unavailable","messagePattern":"workspace_login_handoff_unavailable","errorType":"http","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/src/routes/execution-workspaces.ts","lineNumber":218,"sourceCode":"      executionWorkspace: { id: workspace.id, cwd: workspace.cwd },\n      actor: {\n        userId: req.actor.userId ?? null,\n        userEmail: req.actor.userEmail ?? null,\n        source: req.actor.source ?? null,\n      },\n      next: requestedNext,\n    });\n\n    if (!result.ok) {\n      logger.warn(\n        {\n          executionWorkspaceId: workspace.id,\n          reason: result.failure.reason,\n          detail: \"detail\" in result.failure ? result.failure.detail : null,\n        },\n        \"workspace login handoff was not issued\",\n      );\n      res.status(workspaceLoginHandoffFailureStatus(result.failure)).json({\n        error: \"workspace_login_handoff_unavailable\",\n        // The UI turns this into the labeled snapshot-local credential fallback\n        // or a repair prompt, so the machine reason has to survive the boundary.\n        reason: result.failure.reason,\n        mode: \"credentials\",\n        ...(\"detail\" in result.failure ? { detail: result.failure.detail } : {}),\n        ...(\"readiness\" in result.failure ? { readiness: result.failure.readiness } : {}),\n      });\n      return;\n    }\n\n    await logActivity(db, {\n      companyId: workspace.companyId,\n      // Auditing issuance is a requirement of the handoff design: the nonce ties\n      // this record to the guest's own accept/reject record. The ticket itself is\n      // never recorded.\n      action: \"workspace_login_handoff_issued\",\n      entityType: \"execution_workspace\",","sourceCodeStart":200,"sourceCodeEnd":236,"githubUrl":"https://github.com/paperclipai/paperclip/blob/a7e689b3c35347b529cb9f54c9b9a8575a3dcab6/server/src/routes/execution-workspaces.ts#L200-L236","documentation":"issueWorkspaceLoginHandoff failed to issue a login handoff for the workspace (reason logged); the route maps the failure to a status via workspaceLoginHandoffFailureStatus, meaning direct workspace login is currently unavailable through this path.","triggerScenarios":"Thrown at server/src/routes/execution-workspaces.ts:218 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inspect the logged failure.reason/detail for the handoff blocker","Ensure the workspace runtime service is healthy and reachable","Retry the handoff after the workspace service recovers","Use the workspace's direct access path if available"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a7e689b3c35347b529cb9f54c9b9a8575a3dcab6","analyzedAt":"2026-08-21T17:58:32.592Z","contentChangedAt":"2026-08-21T17:58:32.592Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}