paperclipai/paperclip · error · WorkspaceValidationFailure
fallback_agent_home_cwd
fallback_agent_home_cwd
Error message
Issue ${issue.identifier ?? issue.id} expected a project workspace, but ${input.adapterType} would launch from agent fallback cwd "${effectiveCwd}". What it means
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.
Source
Thrown at server/src/services/heartbeat.ts:2302
scrubGitCredentialText(
`Failed to prepare managed checkout for "${input.repoUrl}" at "${cwd}": ${reason}${authNote ? ` ${authNote}` : ""}`,
),
);
}
try {
await fs.rename(cloneTmpDir, cwd);
} catch (renameError) {
await fs
.rm(cloneTmpDir, { recursive: true, force: true })
.catch(() => undefined);
// The target appearing between the emptiness check and the rename means another
// materialization won the race; adopt its checkout instead of failing the run.
if (await hasAdoptableGitDir()) {
return { cwd, warning: null };
}
const reason =
renameError instanceof Error ? renameError.message : String(renameError);
throw new Error(
`Failed to move managed checkout into place at "${cwd}": ${reason}`,
);
}
return { cwd, warning: null };
}
/**
* Resolve one project workspace row to a usable cwd. The anchor path and each additional
* referenced project share this step: use the configured cwd when present, otherwise clone or
* create the managed checkout directory for the project. It throws only when the managed
* checkout cannot be prepared (for example, a clone failure).
*/
async function resolveConfiguredOrManagedProjectCwd(input: {
companyId: string;
projectId: string;
cwd: string | null;
repoUrl: string | null;View on GitHub (pinned to 01ad858492)
Solutions
- Configure the project workspace so the adapter launches from it instead of the agent fallback cwd.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at server/src/services/heartbeat.ts:2134 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-08-18).
Data as JSON: /api/errors/378d94bf76cdc24e.
Report an issue: GitHub.