vercel/ai · error · CodeModeToolApprovalDeniedError
CODE_MODE_TOOL_APPROVAL_DENIED
CODE_MODE_TOOL_APPROVAL_DENIED
Error message
Tool "${toolName}" approval was denied${reason ? `: ${reason}` : '.'} What it means
Error "Tool "${toolName}" approval was denied${reason ? `: ${reason}` : '.'}" thrown in vercel/ai.
Source
Thrown at packages/code-mode/src/tool-invocation.ts:143
const approved =
typeof approval === 'string'
? approval === 'approved'
: approval?.approved;
const reason = typeof approval === 'string' ? undefined : approval?.reason;
if (typeof approved !== 'boolean') {
throw new CodeModeProtocolError(
`Tool "${toolName}" approval callback returned a malformed approval decision.`,
{ toolName, toolCallId },
);
}
if (reason !== undefined && typeof reason !== 'string') {
throw new CodeModeProtocolError(
`Tool "${toolName}" approval callback returned a malformed approval reason.`,
{ toolName, toolCallId },
);
}
if (!approved) {
throw new CodeModeToolApprovalDeniedError(
toolName,
validation.value,
toolCallId,
reason,
);
}
}
const output = await raceAgainstAbort(
executeHostTool(hostTool.execute.bind(hostTool), {
input: validation.value,
options: executionOptions,
}),
executionOptions.abortSignal,
);
return {
type: 'success',
valueJson: toJsonPayload(View on GitHub (pinned to 69428b1f8b)
When it happens
Trigger: Thrown at packages/code-mode/src/tool-invocation.ts:143 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of vercel/ai@69428b1f8b (2026-08-30).
Data as JSON: /api/errors/531a5977d91e1879.
Report an issue: GitHub.