paperclipai/paperclip · error · Error
The server no longer reports this import job — it may have r
Error message
The server no longer reports this import job — it may have restarted while the import ran.
What it means
Watch-loop termination in watchImportJob: polling companiesApi.getImportJob returned 404 for a job that was still running when the watch started. Because the server's retention sweep never removes a running job, a 404 means the in-memory job record was lost (server restart), so the watcher clears the stored job id and fails loudly rather than masking a possibly incomplete import as success.
Source
Thrown at ui/src/pages/CompanyImport.tsx:797
async function watchImportJob(
jobId: string,
storageKey: string,
): Promise<CompanyImportWatchOutcome> {
for (;;) {
let job: Awaited<ReturnType<typeof companiesApi.getImportJob>>["job"] | null = null;
try {
job = (await companiesApi.getImportJob(jobId)).job;
} catch (err) {
if (err instanceof ApiError && err.status === 404) {
// The server has no record of this job. The retention sweep only drops
// jobs that have already *settled* (a running job is never removed), so
// a 404 while we are still watching means the in-memory record was lost
// to a restart mid-import — the import never reached a confirmed
// `succeeded` state and may not have finished. Report that honestly
// rather than masking a possibly-incomplete import as a success; the
// refreshed company list lets the user confirm what actually landed.
clearStoredImportJob(storageKey);
throw new Error(
"The server no longer reports this import job — it may have restarted while the import ran.",
);
}
if (
err instanceof ApiError
&& err.status >= 400
&& err.status < 500
&& err.status !== 429
) {
// A permanent client error (an expired board session, lost board
// access, or a bad request) will never recover by polling again, so
// stop instead of leaving the import locked in its running state.
// 429 (rate limited) and 5xx stay transient and fall through below.
clearStoredImportJob(storageKey);
throw new Error(
"The import status can no longer be read — your session may have expired. Reload and sign in to check on it.",
);
}View on GitHub (pinned to a7e689b3c3)
Solutions
- Check whether the import completed by listing companies; re-run the import if it did not.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at ui/src/pages/CompanyImport.tsx:797 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of paperclipai/paperclip@a7e689b3c3 (2026-08-18).
Data as JSON: /api/errors/6547784c16c7bbae.
Report an issue: GitHub.