paperclipai/paperclip · error · Error
<redacted error message from test-drive bootstrap>
Error message
<redacted error message from test-drive bootstrap>
What it means
testDriveCommand wraps the whole test-drive bootstrap/serving flow and rewrites any thrown error through redactTestDriveText, scrubbing any of the app's possibleCredentials from the message before surfacing it. This generic wrapper means the visible message is the underlying bootstrap error with credential substrings removed, and the original error is attached as `cause`.
Solutions
- Inspect error.cause (e.g. print `err.cause` in a debugger or enable verbose logging) for the original message
- Fix the underlying bootstrap error (missing credential, invalid --model, arming failure, etc.)
- Re-run with the credential correctly set so the redactor has nothing to mask
Example fix
// debugging
catch (e) { console.error(e.message); console.error('cause:', e.cause); } Defensive patterns
Strategy: try-catch
Try / catch
try {
await testDriveCommand(opts);
} catch (e) {
if (e.cause) console.error('root cause:', (e.cause as Error).message);
else throw e;
} Prevention
- Always inspect error.cause — the top message may be redacted
- Log full error chains (cause chain) in debug mode
- Keep credentials out of config values you don't want redacted from messages
When it happens
Trigger: Any failure inside testDriveCommand's try block — bootstrap failures, API errors, server startup errors — is caught and re-thrown as this redacted error.
Common situations: Seeing a redacted/unhelpful message because the credential redactor replaced part of the underlying error text; debugging a test-drive failure and needing the root cause.
Related errors
- A safe, unique --revision is required
- ANTHROPIC_API_KEY is required in the CLI process environment
- --api-key-env must name a valid environment variable.
- --api-key-secret-id must be a UUID
- Could not arm “Run tasks in this worktree” for Paperclip…
AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-09-10).
Data as JSON: /api/errors/ad7572aaab4c44e1.
Report an issue: GitHub.
Appendix: source
Thrown at cli/src/commands/test-drive.ts:478
if (linkedWorktree) {
p.log.success("Run tasks in this worktree is enabled for this instance.");
}
const url = dashboardUrl(server);
if (options.browser === false) {
p.log.success(`Paperclip is ready at ${pc.cyan(url)}.`);
return;
}
const opened = await dependencies.openBrowser(url);
if (opened) {
p.log.success(`Paperclip is ready and opened at ${pc.cyan(url)}.`);
} else {
p.log.warn(`Paperclip is ready, but the browser could not be opened. Visit ${url}.`);
}
},
});
} catch (error) {
throw new Error(redactTestDriveText(errorMessage(error), possibleCredentials), { cause: error });
}
}
export function registerTestDriveCommand(program: Command): void {
program
.command("test-drive")
.description("Start an isolated, initialized Paperclip instance for manual testing")
.option("-d, --data-dir <path>", "Paperclip data directory to create or reuse")
.option("--company-name <name>", "Initial company name", "Test Company")
.option("--agent-name <name>", "Initial CEO agent name", "CEO")
.addOption(
new Option("--harness <harness>", "Initial agent harness")
.choices(TEST_DRIVE_HARNESSES)
.default("claude"),
)
.option("--model <model-id>", "Initial agent model")
.addOption(
new Option("--api-key-env <variable>", "Read the provider key from an environment variable")View on GitHub (pinned to 01ad858492)