{"record":{"id":"378d94bf76cdc24e","repo":"paperclipai/paperclip","slug":"fallback-agent-home-cwd","errorCode":"fallback_agent_home_cwd","errorMessage":"Issue ${issue.identifier ?? issue.id} expected a project workspace, but ${input.adapterType} would launch from agent fallback cwd \"${effectiveCwd}\".","messagePattern":"Issue (.+?) expected a project workspace, but (.+?) would launch from agent fallback cwd \"(.+?)\"\\.","errorType":"validation","errorClass":"WorkspaceValidationFailure","httpStatus":null,"severity":"error","filePath":"server/src/services/heartbeat.ts","lineNumber":2302,"sourceCode":"      scrubGitCredentialText(\n        `Failed to prepare managed checkout for \"${input.repoUrl}\" at \"${cwd}\": ${reason}${authNote ? ` ${authNote}` : \"\"}`,\n      ),\n    );\n  }\n\n  try {\n    await fs.rename(cloneTmpDir, cwd);\n  } catch (renameError) {\n    await fs\n      .rm(cloneTmpDir, { recursive: true, force: true })\n      .catch(() => undefined);\n    // The target appearing between the emptiness check and the rename means another\n    // materialization won the race; adopt its checkout instead of failing the run.\n    if (await hasAdoptableGitDir()) {\n      return { cwd, warning: null };\n    }\n    const reason =\n      renameError instanceof Error ? renameError.message : String(renameError);\n    throw new Error(\n      `Failed to move managed checkout into place at \"${cwd}\": ${reason}`,\n    );\n  }\n  return { cwd, warning: null };\n}\n\n/**\n * Resolve one project workspace row to a usable cwd. The anchor path and each additional\n * referenced project share this step: use the configured cwd when present, otherwise clone or\n * create the managed checkout directory for the project. It throws only when the managed\n * checkout cannot be prepared (for example, a clone failure).\n */\nasync function resolveConfiguredOrManagedProjectCwd(input: {\n  companyId: string;\n  projectId: string;\n  cwd: string | null;\n  repoUrl: string | null;","sourceCodeStart":2284,"sourceCodeEnd":2320,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/server/src/services/heartbeat.ts#L2284-L2320","documentation":"The issue's execution policy expects a project workspace, but the resolved effective cwd is the agent's default fallback directory, meaning no project workspace was attached or restorable for this adapter launch. The guard catches this before the agent starts in the wrong location.","triggerScenarios":"Thrown at server/src/services/heartbeat.ts:2134 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Configure the project workspace so the adapter launches from it instead of the agent fallback cwd."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"01ad8584922b5d85292b1723cae71fa0d9b07a19","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}