earendil-works/pi · error · SessionHeaderScanLimitError
Session header exceeds ${MAX_SESSION_HEADER_SCAN_BYTES}-byte
Error message
Session header exceeds ${MAX_SESSION_HEADER_SCAN_BYTES}-byte scan limit: ${filePath} What it means
Error "Session header exceeds ${MAX_SESSION_HEADER_SCAN_BYTES}-byte scan limit: ${filePath}" thrown in earendil-works/pi.
Source
Thrown at packages/coding-agent/src/core/session-manager.ts:609
while (newlineIndex !== -1) {
lineChunks.push(chunk.slice(lineStart, newlineIndex));
const header = parseSessionHeaderCandidate(lineChunks.join(""));
if (header !== undefined) return header;
lineChunks.length = 0;
lineStart = newlineIndex + 1;
newlineIndex = chunk.indexOf("\n", lineStart);
}
lineChunks.push(chunk.slice(lineStart));
}
// Probe for EOF so a final header without a newline is allowed when it ends
// exactly at the scan limit. Any additional byte exceeds the bounded scan.
const probe = Buffer.allocUnsafe(1);
if (readSync(fd, probe, 0, probe.length, null) === 0) {
lineChunks.push(decoder.end());
return parseSessionHeaderCandidate(lineChunks.join("")) ?? null;
}
throw new SessionHeaderScanLimitError(filePath);
} finally {
closeSync(fd);
}
}
function readSessionHeaderForDiscovery(filePath: string): SessionHeader | null {
try {
return readSessionHeader(filePath);
} catch {
// Discovery is best-effort: unreadable or oversized files are not sessions,
// and one corrupt file must not prevent other sessions from being found.
return null;
}
}
function getSessionHeaderCwd(header: SessionHeader): string | undefined {
const cwd = (header as { cwd?: unknown }).cwd;
return typeof cwd === "string" ? cwd : undefined;View on GitHub (pinned to 4af9d21d3b)
When it happens
Trigger: Thrown at packages/coding-agent/src/core/session-manager.ts:609 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of earendil-works/pi@4af9d21d3b (2026-08-24).
Data as JSON: /api/errors/8a0949a173b1a8f5.
Report an issue: GitHub.