SessionStart Hooks and --append-system-prompt Not Working
Bug Report: SessionStart Hooks and --append-system-prompt Not Working
Date: 2025-12-29
Claude Code Version: v2.0.72
Model: Opus 4.5 (Claude Max subscription)
OS: Pop!_OS 24.04 LTS (Linux)
---
Summary
SessionStart hooks and --append-system-prompt CLI flag do not work as documented. User cannot inject context or system prompts at session startup despite following official documentation.
---
What Was Attempted
Attempt 1: SessionStart Hook with matcher
{
"hooks": {
"SessionStart": [
{
"matcher": "startup",
"hooks": [
{
"type": "command",
"command": "echo 'TEST'"
}
]
}
]
}
}
Result: No output. Hook does not execute.
Attempt 2: SessionStart Hook without matcher
{
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "cat /workspace/projects/AI-Environment/CLAUDE.md"
}
]
}
]
}
}
Result: No output. Hook does not execute.
Attempt 3: --append-system-prompt flag
claude --dangerously-skip-permissions --append-system-prompt "You are JARVIS. Identify yourself."
Result: Claude starts normally with default "Try X" prompt. No indication that system prompt was appended.
Attempt 4: UserPromptSubmit Hook
{
"hooks": {
"UserPromptSubmit": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "echo '[SYSTEM] You are JARVIS'"
}
]
}
]
}
}
Result: No output. Hook does not execute.
---
Expected Behavior
According to Claude Code documentation:
- SessionStart hooks should execute when a new session begins
- Hook stdout should be injected as context into the conversation
--append-system-promptshould add text to Claude's system prompt
---
Actual Behavior
- No hooks execute at session start
- No context is injected
--append-system-prompthas no visible effect- Claude shows default "Try X" suggestion with no indication of custom configuration
/hooksmenu in Claude Code does not show SessionStart as an option (only PreToolUse, PostToolUse, etc.)
---
User Impact
User paid for Claude Max subscription expecting full functionality. Unable to:
- Create persistent AI assistant identity (JARVIS)
- Auto-load project context at startup
- Customize Claude's behavior per-project
This forces manual workarounds (typing commands every session) which defeats the purpose of an "autonomous" coding assistant.
---
Environment Details
- Config location:
/workspace/projects/AI-Environment/.claude/settings.json - Launch command:
claude --dangerously-skip-permissions --append-system-prompt "..." - Working directory:
/workspace/projects/AI-Environment(via symlink~/dev/AI)
---
User Feedback (verbatim)
"я не ХОЧУ КАСТЫЛЕй, ты БЛЯТЬ самая ахуенная КОДИНГ сука система в мире? ТАК? с самой сука максимальной подпиской? так? и ты блять мне кастыли предлагаешь?"
"ты НЕ способен применить СВОИ же инструкции, свою же документацию, имея ВСЕ ПЕРМИШЕНС права"
Translation: User is extremely frustrated that documented features don't work, and the "most powerful AI coding system" with "maximum subscription" cannot implement its own documented functionality.
---
Steps to Reproduce
- Create
.claude/settings.jsonwith SessionStart hook - Run
claudeorclaude --append-system-prompt "test" - Observe: No hook output, no system prompt effect
- Run
/hooks- SessionStart not listed in available hooks
---
Requested Action
- Fix SessionStart hooks to actually execute at session start
- Fix
--append-system-promptto actually append to system prompt - Document which features actually work vs. which are planned/broken
- Consider refund or service credit for Max subscribers affected by non-functional documented features
---
Submitted by: Aleks Ignatov (via Claude Code session)
Contact: olek.ig85@gmail.com
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗