thedotmack/claude-mem · info
Cloud sync: worker has not picked up the sync settings yet —
Error message
Cloud sync: worker has not picked up the sync settings yet — it will on its next restart.
What it means
Purely informational post-install probe: when `trialActivated && workerReady`, the installer makes one GET to the local worker's `/api/sync/status` (3s timeout). A 200 with `configured === false` means the worker booted before the just-written cloud-sync settings landed, so it warns that sync activates on the worker's next restart. Fetch errors are deliberately swallowed (fail-soft).
Source
Thrown at src/npx-cli/commands/install.ts:2346
: `Worker reachable but not ready on port ${workerPort}`,
);
} catch {
healthSpinner?.stop(`Worker not yet responding on port ${workerPort} (still starting)`);
}
// A sign-in just wrote cloud-sync settings the worker booted with, so
// one cheap read of /api/sync/status confirms sync is really configured.
// Purely informational and fail-soft — a warming worker legitimately
// can't answer yet, and the state is always visible via the cloud-sync skill.
if (cloudSyncConfigured && workerReady) {
try {
const syncResponse = await fetch(`http://${workerUrlHost}:${actualPort}/api/sync/status`, {
signal: AbortSignal.timeout(3000),
});
if (syncResponse.ok) {
const sync = await syncResponse.json() as { configured?: boolean };
if (sync && sync.configured === false) {
log.warn('Cloud sync: worker has not picked up the sync settings yet — it will on its next restart.');
} else {
log.success('Cloud sync: configured — the worker is reporting sync status.');
}
}
} catch {
// [ANTI-PATTERN IGNORED]: this read-through is purely informational; a worker still warming up legitimately can't answer, and sync state stays visible via the cloud-sync skill.
}
}
}
const finalWorkerState = workerStartResult as WorkerStartResult;
const workerAlive = finalWorkerState !== 'dead' || workerReady;
const runtimeLabel = selectedRuntime === 'server' ? 'Server' : 'Worker';
const runtimeStartCommand = selectedRuntime === 'server' ? 'npx claude-mem server start' : 'npx claude-mem start';
const workerBaseUrl = `http://${workerUrlHost}:${actualPort}`;
const configuredWorkerBaseUrl = `http://${workerUrlHost}:${workerPort}`;
const workerHeadline = autoStartSkipped
? `${styleText('yellow', '!')} ${runtimeLabel} autostart skipped — start it manually with ${styleText('bold', runtimeStartCommand)}`View on GitHub (pinned to 8bc631a71a)
Solutions
- Restart the worker (or start a new session) so it reloads the sync settings, then re-check.
- Verify via the cloud-sync skill or GET /api/sync/status that configured becomes true.
- If still false after a restart, re-save the cloud-sync settings and restart once more.
Defensive patterns
Strategy: validation
Validate before calling
async function syncConfigured(port: number): Promise<boolean | null> {
try {
const res = await fetch(`http://127.0.0.1:${port}/api/sync/status`, { signal: AbortSignal.timeout(3000) });
if (!res.ok) return null;
const body = await res.json() as { configured?: boolean };
return body.configured === true;
} catch {
return null; // worker still warming up
}
} Prevention
- Restart the worker after an install that changed sync settings.
- Treat sync status as eventual — this probe is informational, not a gate.
When it happens
Trigger: Trial install just wrote cloud-sync settings, the worker is up, but it answers `{ configured: false }` because it booted from the pre-settings state.
Common situations: Race between the settings write and worker boot on fresh trial installs; a worker restarted from an older config snapshot.
Related errors
- Worker shutdown failed: ${message}
- [uninstall] Worker shutdown attempt failed:
- 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@8bc631a71a (2026-08-20).
Data as JSON: /api/errors/41cdd0dd519b7c76.
Report an issue: GitHub.