JuliusBrussee/caveman · error · Error
cave_claude_max_budget_invalid
Error message
cave_claude_max_budget_invalid
What it means
Error "cave_claude_max_budget_invalid" thrown in JuliusBrussee/caveman.
Source
Thrown at packages/agent/src/claude-runtime.ts:111
}
if (definition.memory !== undefined) {
throw new Error("cave_claude_memory_bridge_unavailable");
}
if (definition.tools.some((item) => item.runtime?.kind === "subagent")) {
throw new Error("cave_claude_subagent_bridge_unavailable");
}
const unsupportedTool = definition.tools.find((item) =>
item.effect !== "read" || item.result !== "inline");
if (unsupportedTool !== undefined) {
throw new Error(`cave_claude_tool_contract_unsupported:${unsupportedTool.name}`);
}
if (options.maxTurns !== undefined &&
(!Number.isSafeInteger(options.maxTurns) || options.maxTurns <= 0 || options.maxTurns > 1_000)) {
throw new Error("cave_claude_max_turns_invalid");
}
if (options.maxBudgetUsd !== undefined &&
(!Number.isFinite(options.maxBudgetUsd) || options.maxBudgetUsd <= 0)) {
throw new Error("cave_claude_max_budget_invalid");
}
const rootDir = resolve(options.rootDir ?? process.cwd());
const lowered = await lowerAgentContext(definition, { rootDir, input });
const bill = contextBill(lowered.ir);
const selected = resolveClaudeModel(definition, rootDir);
const reasoningOptions = claudeReasoningOptions(
selected,
definition.reasoning,
definition.output?.maxTokens,
);
const sandbox = await prepareHarnessToolSandbox(definition, {
rootDir,
...(options.entryPath === undefined ? {} : { entryPath: options.entryPath }),
});
const controller = new AbortController();
const abort = () => controller.abort(options.signal?.reason ?? new Error("cave_run_aborted"));
options.signal?.addEventListener("abort", abort, { once: true });
if (options.signal?.aborted) abort();View on GitHub (pinned to 27d5a3981a)
Solutions
- Set maxBudgetUsd to a positive number for the Claude run.
When it happens
Trigger: Thrown at packages/agent/src/claude-runtime.ts:111 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of JuliusBrussee/caveman@27d5a3981a (2026-08-15).
Data as JSON: /api/errors/8fac1ac52ebf06a1.
Report an issue: GitHub.