Skip to content

Commit 1f1c87e

Browse files
cxbAsDevclaude
andcommitted
fix(provider-usage): bound usage JSON response reads to prevent OOM
Replace unbounded response.json() with readProviderJsonResponse in readUsageJson to cap provider usage API response bodies at 16 MiB, preventing unbounded buffering from all seven providers (claude, gemini, codex, z.ai, deepseek, minimax, and openai-compatible). Co-Authored-By: Claude <[email protected]>
1 parent 87db23e commit 1f1c87e

1 file changed

Lines changed: 3 additions & 1 deletion

File tree

src/infra/provider-usage.fetch.shared.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// Shared fetch and parsing helpers for provider usage endpoints.
22
import { resolveTimerTimeoutMs } from "@openclaw/normalization-core/number-coercion";
3+
import { readProviderJsonResponse } from "../agents/provider-http-errors.js";
34
import { parseFiniteNumber as parseFiniteNumberish } from "./parse-finite-number.js";
45
import { PROVIDER_LABELS } from "./provider-usage.shared.js";
56
import type { ProviderUsageSnapshot, UsageProviderId } from "./provider-usage.types.js";
@@ -67,7 +68,8 @@ export async function readUsageJson(
6768
response: Response,
6869
): Promise<{ ok: true; data: unknown } | { ok: false; snapshot: ProviderUsageSnapshot }> {
6970
try {
70-
return { ok: true, data: await response.json() };
71+
const data = await readProviderJsonResponse<unknown>(response, `${provider} usage`);
72+
return { ok: true, data };
7173
} catch {
7274
return {
7375
ok: false,

0 commit comments

Comments
 (0)