UserPromptExpansion Hook - Claude Code
Fires when a slash command expands; can block or inject context.
UserPromptExpansion runs when a slash command (including a skill) expands into its full prompt. It's your hook point between "user typed /foo" and "Claude starts reasoning".
What it does
The hook sees the expanded prompt from a slash command. It can modify the expansion, block the command, or attach context only relevant to that command. This is how you enforce per-skill rules - maybe your /deploy skill should always refuse on Fridays, or your /merge skill should always require a PR number.
When to use it
- Enforcing constraints on specific skills (never run destructive skills in main branch).
- Attaching dynamic context to certain commands (pull current config, add today's date).
- Auditing slash command usage across a team.
- Building guardrails around team-shared skills.
Gotchas
- The hook fires for every matching expansion, including auto-invocations. Scope triggers carefully.
- Blocking without explanation frustrates users. Always return a reason.
- Expansion-time hooks don't see the user's raw intent, only the resolved skill body.
Official docs: https://code.claude.com/docs/en/hooks.md#userpromptexpansion
Technical content at the intersection of AI and development. Building with AI agents, Claude Code, and modern dev tools - then showing you exactly how it works.
Get the weekly deep dive
Tutorials on Claude Code, AI agents, and dev tools - delivered free every week.
Was this helpful?
Related Guides
Related Tools
Claude Code
Anthropic's agentic coding CLI. Runs in your terminal, edits files autonomously, spawns sub-agents, and maintains memory...
View ToolCodeburn
Interactive TUI dashboard that shows exactly where your Claude Code and Cursor tokens are going, in real time.
View ToolClaude Opus 4.7
Anthropic's flagship reasoning model. Best-in-class for coding, long-context analysis, and agentic workflows. 1M token c...
View ToolZed
High-performance code editor built in Rust with native AI integration. Sub-millisecond input latency. Built-in assistant...
View ToolRelated Videos

Nimbalyst: The Open-Source Visual Workspace for Building with Codex and Claude Code
Nimbalyst Demo: A Visual Workspace for Codex + Claude Code with Kanban, Plans, and AI Commits Try it: https://nimbalyst.com/ Star Repo Here: https://github.com/Nimbalyst/nimbalyst This video demos N...

Composio: Connect OpenClaw & Claude Code to 1,000+ Apps via CLI
Composio: Connect AI Agents to 1,000+ Apps via CLI (Gmail, Google Docs/Sheets, Hacker News Workflows) Check out Composio here: http://dashboard.composio.dev/?utm_source=Youtube&utm_channel=0426&utm_...

Claude Code Channels in 8 Minutes
Anthropic has released Channels for Claude Code, enabling external events (CI alerts, production errors, PR comments, Discord/Telegram messages, webhooks, cron jobs, logs, and monitoring signals) to b...
Related Posts

Claude Opus 4.8 Is an Agent Honesty Release
Claude Opus 4.8 looks like a benchmark bump, but the developer story is better honesty, dynamic workflows, and effort co...

Anthropic Sonnet 4.5 in Claude Code
Anthropic's Claude Sonnet 4.5 isn't just another model increment. The company claims they've observed it maintaining foc...

AI Code Attribution Needs Defect Forensics, Not Vibes
The rsync Claude debate shows why teams need reproducible defect forensics before AI attribution becomes a public blame...

Security Agents Need Repro Harnesses, Not More Scan Prompts
Anthropic's open-source vulnerability harness shows where AI security work is going: reproducible exploit loops, separat...

AI Agent Containment Needs a Capability Ledger
Anthropic's Claude containment writeup points to the next security layer for coding agents: deterministic capability led...

The Model, IDE, CLI, and Agent Framework Changes That Actually Matter
The AI coding market is noisy. The changes that matter are easier to spot when you separate model capability, editor loo...
