Inkdown
Start writing

Claude-Code

62 filesยท4 subfolders

Shared Workspace

Claude-Code
codex

20-hooks-system

Shared from "Claude-Code" on Inkdown

Hooks System: Pre/Post Sampling Architecture

Overview

The Hooks System is Claude Code's extension mechanism for modifying behavior without changing core code. It provides interception points before and after key operations, enabling git tracking, metrics, safety checks, and custom extensions.

Plain text
0000_start_here_index_and_recommended_reading_order.md
0100_project_overview_tech_stack_runtime_modes_and_folder_map.md
0200_startup_flow_entry_points_and_cold_start_sequence.md
0300_codebase_modules_layers_state_models_and_schemas.md
0400_system_architecture_and_design_rationale.md
0500_interactive_repl_request_flow_end_to_end.md
0600_headless_sdk_and_print_mode_request_flow_end_to_end.md
0700_mcp_integration_connection_and_tool_call_flow.md
0800_external_services_sdks_storage_and_local_dependencies.md
0900_environment_variables_settings_feature_flags_and_failure_modes.md
1000_non_obvious_patterns_gotchas_and_debugging_traps.md
1100_full_codebase_file_inventory_grouped_by_directory.md
kimi
00-overview.md
01-entrypoints.md
02-state-management.md
03-query-system.md
04-tools-system.md
05-tasks-system.md
06-ui-components.md
07-bridge-remote.md
08-services.md
09-skills-plugins.md
10-commands.md
11-testing-architecture.md
12-permission-system.md
13-build-system.md
14-ink-internals.md
15-git-internals.md
16-context-compaction.md
17-vim-mode.md
18-mailbox-notifications.md
19-session-persistence.md
20-hooks-system.md
21-error-recovery.md
README.md
qwen
00-overview.md
01-entry-points.md
02-query-engine.md
03-tools-and-tasks.md
04-commands-and-skills.md
05-state-management.md
06-ink-rendering.md
07-bridge-remote.md
08-mcp-services.md
09-services-overview.md
10-multi-agent.md
11-system-prompt-constants.md
12-tool-interface.md
13-memory-system.md
14-buddy-companion.md
15-keybindings.md
16-stop-hooks.md
17-vim-mode.md
18-upstreamproxy.md
19-cost-tracking-history.md
20-contexts-styles-onboarding.md
21-hooks.md
22-screens.md
tweets-explain
claude-code-memory-analysis.md
compact
memory-system
agentic-architecture

Core Files

FilePurpose
types/hooks.tsHook type definitions
utils/hooks/hookHelpers.tsHook registration and execution
utils/hooks/postSamplingHooks.tsPost-sampling hook implementation
utils/hooks/preSamplingHooks.tsPre-sampling hook implementation
utils/hooks/sessionHooks.tsSession lifecycle hooks
utils/hooks/hookEvents.tsHook event bus
tools/shared/gitOperationTracking.tsGit tracking hooks

Hook Interface

TypeScript

Hook Registration

TypeScript

Pre-Sampling Hooks

Git Tracking Hook (Pre-Edit)
TypeScript
Permission Check Hook (Pre-Tool)
TypeScript
Safety Hook (Pre-Bash)
TypeScript

Post-Sampling Hooks

Metrics Hook
TypeScript
File History Hook
TypeScript
Auto-Compact Hook
TypeScript

Session Lifecycle Hooks

TypeScript

Hook Integration in Tool Execution

TypeScript

Key Design Principles

  1. Order Matters: Pre-hooks execute sequentially, first cancellation wins
  2. Context Mutation: Hooks can modify context for downstream execution
  3. Error Isolation: One failing hook doesn't break others
  4. Async Support: Hooks can defer decisions (e.g., waiting for user)
  5. Cleanup: Post-hooks run even if operation fails (try/finally)

Debugging Hooks

Bash