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

  1. Inspect error.cause (e.g. print `err.cause` in a debugger or enable verbose logging) for the original message
  2. Fix the underlying bootstrap error (missing credential, invalid --model, arming failure, etc.)
  3. 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

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


AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-09-10). Data as JSON: /api/errors/ad7572aaab4c44e1. Report an issue: GitHub.