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

Function executePreToolHooks

src/utils/hooks.ts:3538–3580  ·  view source on GitHub ↗
(
  toolName: string,
  toolUseID: string,
  toolInput: ToolInput,
  toolUseContext: ToolUseContext,
  permissionMode?: string,
  signal?: AbortSignal,
  timeoutMs: number = TOOL_HOOK_EXECUTION_TIMEOUT_MS,
  requestPrompt?: (
    sourceName: string,
    toolInputSummary?: string | null,
  ) => (request: PromptRequest) => Promise<PromptResponse>,
  toolInputSummary?: string | null,
)

Source from the content-addressed store, hash-verified

3536 * @returns Async generator that yields progress messages and returns blocking errors
3537 */
3538export async function* executePreToolHooks<ToolInput>(
3539 toolName: string,
3540 toolUseID: string,
3541 toolInput: ToolInput,
3542 toolUseContext: ToolUseContext,
3543 permissionMode?: string,
3544 signal?: AbortSignal,
3545 timeoutMs: number = TOOL_HOOK_EXECUTION_TIMEOUT_MS,
3546 requestPrompt?: (
3547 sourceName: string,
3548 toolInputSummary?: string | null,
3549 ) => (request: PromptRequest) => Promise<PromptResponse>,
3550 toolInputSummary?: string | null,
3551): AsyncGenerator<AggregatedHookResult> {
3552 const appState = toolUseContext.getAppState()
3553 const sessionId = toolUseContext.agentId ?? getSessionId()
3554 if (!hasHookForEvent('PreToolUse', appState, sessionId)) {
3555 return
3556 }
3557
3558 logForDebugging(`executePreToolHooks called for tool: ${toolName}`, {
3559 level: 'verbose',
3560 })
3561
3562 const hookInput: PreToolUseHookInput = {
3563 ...createBaseHookInput(permissionMode, undefined, toolUseContext),
3564 hook_event_name: 'PreToolUse',
3565 tool_name: toolName,
3566 tool_input: toolInput,
3567 tool_use_id: toolUseID,
3568 }
3569
3570 yield* executeHooks({
3571 hookInput,
3572 toolUseID,
3573 matchQuery: toolName,
3574 signal,
3575 timeoutMs,
3576 toolUseContext,
3577 requestPrompt,
3578 toolInputSummary,
3579 })
3580}
3581
3582/**
3583 * Execute post-tool hooks if configured

Callers 1

runPreToolUseHooksFunction · 0.85

Calls 5

getSessionIdFunction · 0.85
hasHookForEventFunction · 0.85
createBaseHookInputFunction · 0.85
executeHooksFunction · 0.85
logForDebuggingFunction · 0.70

Tested by

no test coverage detected