{"record":{"id":"531a5977d91e1879","repo":"vercel/ai","slug":"code-mode-tool-approval-denied-531a59","errorCode":"CODE_MODE_TOOL_APPROVAL_DENIED","errorMessage":"Tool \"${toolName}\" approval was denied${reason ? `: ${reason}` : '.'}","messagePattern":"Tool \"(.+?)\" approval was denied(.+?)` : '\\.'\\}","errorType":"exception","errorClass":"CodeModeToolApprovalDeniedError","httpStatus":null,"severity":"error","filePath":"packages/code-mode/src/tool-invocation.ts","lineNumber":143,"sourceCode":"    const approved =\n      typeof approval === 'string'\n        ? approval === 'approved'\n        : approval?.approved;\n    const reason = typeof approval === 'string' ? undefined : approval?.reason;\n    if (typeof approved !== 'boolean') {\n      throw new CodeModeProtocolError(\n        `Tool \"${toolName}\" approval callback returned a malformed approval decision.`,\n        { toolName, toolCallId },\n      );\n    }\n    if (reason !== undefined && typeof reason !== 'string') {\n      throw new CodeModeProtocolError(\n        `Tool \"${toolName}\" approval callback returned a malformed approval reason.`,\n        { toolName, toolCallId },\n      );\n    }\n    if (!approved) {\n      throw new CodeModeToolApprovalDeniedError(\n        toolName,\n        validation.value,\n        toolCallId,\n        reason,\n      );\n    }\n  }\n\n  const output = await raceAgainstAbort(\n    executeHostTool(hostTool.execute.bind(hostTool), {\n      input: validation.value,\n      options: executionOptions,\n    }),\n    executionOptions.abortSignal,\n  );\n  return {\n    type: 'success',\n    valueJson: toJsonPayload(","sourceCodeStart":125,"sourceCodeEnd":161,"githubUrl":"https://github.com/vercel/ai/blob/69428b1f8b037e4d118fb4853428d5c4e620493c/packages/code-mode/src/tool-invocation.ts#L125-L161","documentation":"Error \"Tool \"${toolName}\" approval was denied${reason ? `: ${reason}` : '.'}\" thrown in vercel/ai.","triggerScenarios":"Thrown at packages/code-mode/src/tool-invocation.ts:143 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"69428b1f8b037e4d118fb4853428d5c4e620493c","analyzedAt":"2026-08-30T12:32:21.016Z","schemaVersion":2},"datasetVersion":"2026-08-30T13:17:10.514Z"}