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`.
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)
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
- Managed installs require Node.js ${MINIMUM_NODE_VERSION} or
- Import cancelled.
- Could not open your browser automatically. Open this URL man
- Unknown config key ${warning.path}; did you mean ${warning.s
- SSH fixture prerequisites are incomplete: ${status.ssh.reaso
AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-09-10).
Data as JSON: /api/errors/ad7572aaab4c44e1.
Report an issue: GitHub.