MCPcopy
hub / github.com/claude-code-best/claude-code / executePostToolUseFailureHooks

Function executePostToolUseFailureHooks

src/utils/hooks.ts:3636–3671  ·  view source on GitHub ↗
(
  toolName: string,
  toolUseID: string,
  toolInput: ToolInput,
  error: string,
  toolUseContext: ToolUseContext,
  isInterrupt?: boolean,
  permissionMode?: string,
  signal?: AbortSignal,
  timeoutMs: number = TOOL_HOOK_EXECUTION_TIMEOUT_MS,
)

Source from the content-addressed store, hash-verified

3634 * @returns Async generator that yields progress messages and blocking errors
3635 */
3636export async function* executePostToolUseFailureHooks<ToolInput>(
3637 toolName: string,
3638 toolUseID: string,
3639 toolInput: ToolInput,
3640 error: string,
3641 toolUseContext: ToolUseContext,
3642 isInterrupt?: boolean,
3643 permissionMode?: string,
3644 signal?: AbortSignal,
3645 timeoutMs: number = TOOL_HOOK_EXECUTION_TIMEOUT_MS,
3646): AsyncGenerator<AggregatedHookResult> {
3647 const appState = toolUseContext.getAppState()
3648 const sessionId = toolUseContext.agentId ?? getSessionId()
3649 if (!hasHookForEvent('PostToolUseFailure', appState, sessionId)) {
3650 return
3651 }
3652
3653 const hookInput: PostToolUseFailureHookInput = {
3654 ...createBaseHookInput(permissionMode, undefined, toolUseContext),
3655 hook_event_name: 'PostToolUseFailure',
3656 tool_name: toolName,
3657 tool_input: toolInput,
3658 tool_use_id: toolUseID,
3659 error,
3660 is_interrupt: isInterrupt,
3661 }
3662
3663 yield* executeHooks({
3664 hookInput,
3665 toolUseID,
3666 matchQuery: toolName,
3667 signal,
3668 timeoutMs,
3669 toolUseContext,
3670 })
3671}
3672
3673export async function* executePermissionDeniedHooks<ToolInput>(
3674 toolName: string,

Callers 1

Calls 4

getSessionIdFunction · 0.85
hasHookForEventFunction · 0.85
createBaseHookInputFunction · 0.85
executeHooksFunction · 0.85

Tested by

no test coverage detected