thedotmack/claude-mem · info
No worries — finish anytime: npx claude-mem install
Error message
No worries — finish anytime: npx claude-mem install
What it means
During the poll loop that waits for the user to finish browser sign-up for the cmem Pro trial, the user cancelled (spinner cancelled or Ctrl-C byte seen on stdin). The spinner is cancelled with 'Stopped waiting for the browser steps.', this warning (TRIAL_FINISH_LATER_WARNING: 'No worries — finish anytime: npx claude-mem install') reassures the user, a 'trial_poll_timeout' event with outcome 'cancelled' is captured, and the flow returns null. Trial state ('link_sent') stays persisted so a future install resumes it.
Source
Thrown at src/npx-cli/commands/install.ts:1742
// every other spinner in this file would not fire until much later
// (observed empirically). Resume stdin for the duration of the poll so the
// first Ctrl+C is delivered immediately — normally clack's raw-mode
// keypress handler then exits cleanly (its standard spinner behavior); the
// data listener below is the fallback that turns any press clack misses
// into a graceful escape to the provider prompt. Restored in the finally.
let ctrlCPressed = false;
const onStdinData = (chunk: Buffer | string): void => {
if (typeof chunk === 'string' ? chunk.includes('\x03') : chunk.includes(0x03)) {
ctrlCPressed = true;
}
};
process.stdin.on('data', onStdinData);
process.stdin.resume();
const wasCancelled = (): boolean => spin.isCancelled || ctrlCPressed;
const bailCancelled = async (): Promise<null> => {
if (!spin.isCancelled) spin.cancel('Stopped waiting for the browser steps.');
log.warn(TRIAL_FINISH_LATER_WARNING);
await captureCliEvent('trial_poll_timeout', {
version,
stage,
outcome: 'cancelled',
duration_ms: Date.now() - startedAt,
});
return null;
};
try {
let consecutiveFailures = 0;
while (Date.now() - startedAt < TRIAL_POLL_BUDGET_MS) {
if (wasCancelled()) return bailCancelled();
const result = await pollTrialOnce(pairing);
// Re-check: Ctrl+C may have landed during the (up to 10s) poll request.
if (wasCancelled()) return bailCancelled();
View on GitHub (pinned to e2d1df569a)
Solutions
- Finish anytime: rerun `npx claude-mem install` — it detects the stored email and offers to resend the sign-in link.
- If you clicked the link already in the browser, completing it activates Pro on the server side; rerun install to sync credentials.
- To opt out entirely, clear CLAUDE_MEM_PRO_TRIAL_* keys from ~/.claude-mem/settings.json.
Defensive patterns
Strategy: fallback
Prevention
- Click the emailed link promptly while the installer waits — poll budgets are finite.
- Ctrl-C during the wait is safe: trial state 'link_sent' persists and install resumes the flow next time.
- Finish later via `npx claude-mem install`; it detects the stored email and re-offers the resend.
When it happens
Trigger: User presses Ctrl-C or cancels the spinner while the installer polls cmem.ai for trial activation. The stdin listener flags 0x03 bytes because Ctrl-C may not raise SIGINT during prompt/TTY raw mode.
Common situations: User wants to finish the browser steps later; email link not arrived yet; user abandons install temporarily. The persisted CLAUDE_MEM_PRO_TRIAL_STATE='link_sent' makes the next install offer a resend (confirm prompt path).
Related errors
- Couldn't reach cmem.ai — start the trial later with npx clau
- CMEM Pro requires a signed-in claude-mem account.
- API key prompt cancelled — leaving existing configuration un
- Gateway setup cancelled — leaving existing configuration unt
- Provider=${options.provider} requested non-interactively. AP
AI-assisted analysis of thedotmack/claude-mem@e2d1df569a (2026-08-20).
Data as JSON: /api/errors/04ad0b37db1898ab.
Report an issue: GitHub.