diegosouzapw/OmniRoute · error · Error
Claude Web browser response exceeded the size limit
Error message
Claude Web browser response exceeded the size limit
What it means
Response-size guard inside the Playwright page.evaluate fetch in fetchClaudeWebPageResponse: the captured Claude Web response body (or its declared content-length) exceeded the maxBytes budget passed in the input. This protects the Node process from buffering an oversized page-context response and indicates an unexpectedly large (or malformed/looping) upstream payload.
Solutions
- Retry the request; transient oversized payloads from claude.ai usually clear on a fresh conversation turn
- If persistent, raise the executor's maxBytes budget for this capture after confirming memory headroom
- Inspect the captured headers for a mismatched content-length suggesting a non-SSE HTML error page being returned
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at open-sse/executors/claude-web/browserTransport.ts:274 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of diegosouzapw/OmniRoute@a179ffed5b (2026-08-25).
Data as JSON: /api/errors/46a9148c7caabc2e.
Report an issue: GitHub.
Appendix: source
Thrown at open-sse/executors/claude-web/browserTransport.ts:274
};
}
export async function fetchClaudeWebPageResponse(
page: Page,
input: ClaudeWebBrowserFetchInput
): Promise<{ status: number; headers: Record<string, string>; body: Uint8Array }> {
const captured = await page.evaluate(async ({ url, headers, body, maxBytes }) => {
const response = await fetch(url, {
method: "POST",
headers,
body,
credentials: "include",
});
const responseHeaders = Object.fromEntries(response.headers.entries());
const declaredLength = Number.parseInt(response.headers.get("content-length") ?? "", 10);
if (Number.isFinite(declaredLength) && declaredLength > maxBytes) {
await response.body?.cancel().catch(() => {});
throw new Error("Claude Web browser response exceeded the size limit");
}
const reader = response.body?.getReader();
const bodyChunks: string[] = [];
let totalBytes = 0;
const encodeBase64 = (bytes: Uint8Array): string => {
let binary = "";
const sliceSize = 32 * 1024;
for (let offset = 0; offset < bytes.byteLength; offset += sliceSize) {
binary += String.fromCharCode(...bytes.subarray(offset, offset + sliceSize));
}
return btoa(binary);
};
try {
while (reader) {
const { value, done } = await reader.read();
if (done) break;View on GitHub (pinned to a179ffed5b)