Plugin SessionStart hooks don't surface hookSpecificOutput.additionalContext to Claude
Resolved 💬 8 comments Opened Jan 7, 2026 by christinetyip Closed May 11, 2026
Description
When a SessionStart hook is defined in a plugin's hooks.json (referenced via plugin.json), the hook executes successfully but the hookSpecificOutput.additionalContext content is not passed to Claude. Claude only receives a generic success message like "SessionStart:Callback hook success: Success" instead of the actual context.
Expected behavior
The additionalContext value should be injected into Claude's context, as documented in the hooks reference.
Actual behavior
- Hook executes and returns valid JSON with
hookSpecificOutput.additionalContext - Claude only sees the success callback message, not the context content
Reproduction
- Create a plugin with
hooks.jsoncontaining a SessionStart hook:
{
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/session-start.sh"
}
]
}
]
}
}
- Hook script outputs valid JSON:
{
"hookSpecificOutput": {
"hookEventName": "SessionStart",
"additionalContext": "test context that should be visible to Claude"
}
}
- Start a new Claude Code session
- Claude does not receive the "test context" - only sees the success callback
Workaround
Adding the same hook directly to ~/.claude/settings.json (user config) works correctly - the additionalContext is properly surfaced to Claude.
Environment
- macOS Darwin 24.5.0
- Claude Code CLI
Impact
Plugins cannot provide session startup context to Claude, limiting use cases like:
- Loading previous session state
- Injecting project-specific instructions at startup
- Providing retrieval practice prompts
- Any plugin that needs to influence Claude's initial behavior
This issue has 8 comments on GitHub. Read the full discussion on GitHub ↗