vercel/ai · error · CodeModeProtocolError
CODE_MODE_PROTOCOL_ERROR
CODE_MODE_PROTOCOL_ERROR
Error message
Tool "${toolName}" approval callback returned a malformed approval decision. What it means
Error "Tool "${toolName}" approval callback returned a malformed approval decision." thrown in vercel/ai.
Source
Thrown at packages/code-mode/src/tool-invocation.ts:131
toolCallId,
}),
),
baseExecutionOptions.abortSignal,
);
if (approval === undefined) {
throw new CodeModeToolApprovalRequiredError(
toolName,
validation.value,
toolCallId,
);
}
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,
);
}View on GitHub (pinned to 69428b1f8b)
When it happens
Trigger: Thrown at packages/code-mode/src/tool-invocation.ts:131 when the library encounters an invalid state.
Common situations: See trigger scenarios.
Understand the failure class
- Parsing and encoding errors: unexpected token, malformed input — why parsers reject input and how to find the real culprit.
AI-assisted analysis of vercel/ai@69428b1f8b (2026-08-30).
Data as JSON: /api/errors/d870dfe39c0c21f3.
Report an issue: GitHub.