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.