概要
Claude Codeの起動時に発生していた SessionStart:startup hook error について、原因の深掘りと、プラグインの手動アップデートによる根本解決の記録です。
発生していた問題
Claude Codeセッション開始時に、以下のエラーが解消されない状態でした。
SessionStart:startup hook error
調査プロセス
1. 現状確認
ワーカープロセス自体は動作していましたが、フックスクリプトの手動実行により異常を検知しました。
claude-mem status # Worker is running, PID: 63381, Port: 37777
2. 根本原因の特定
user-message-hook.js を直接実行したところ、Exit code 3 が返されることを発見。これはプラグイン内部で何らかの論理エラーが発生していることを示唆しています。
3. バージョンの不整合を確認
GitHubリポジトリ(marketplaces)を確認したところ、インストールされているバージョンが大幅に古いことが判明しました。
| 状態 | バージョン | 備考 |
|---|---|---|
| インストール済み | 8.0.4 |
20以上のコミット遅れ |
| 最新版 (origin/main) | 9.0.12 |
多数のバグ修正を内包 |
解決手順(手動アップデート)
最新版へ追従するため、以下の手順で手動更新を実施しました。
Step 1: ソースコードの更新
cd ~/.claude/plugins/marketplaces/thedotmack git pull origin main # 859行の変更を反映
Step 2: キャッシュディレクトリ(実行環境)の差し替え
# 古いキャッシュの削除
rm -rf ~/.claude/plugins/cache/thedotmack/claude-mem/8.0.4
# 新バージョン用ディレクトリの作成とコピー
mkdir -p ~/.claude/plugins/cache/thedotmack/claude-mem/9.0.12
cp -r ~/.claude/plugins/marketplaces/thedotmack/plugin/* \
~/.claude/plugins/cache/thedotmack/claude-mem/9.0.12/
Step 3: 設定ファイルの書き換え
~/.claude/installed_plugins.json 内のパスとバージョン情報を更新しました。
- "installPath": "~/.claude/plugins/cache/thedotmack/claude-mem/8.0.4", - "version": "8.0.4", + "installPath": "~/.claude/plugins/cache/thedotmack/claude-mem/9.0.12", + "version": "9.0.12",
Step 4: 依存関係の再構築とワーカー起動
# 依存関係のインストール(Bunを使用) node scripts/smart-install.js # ワーカーの再起動 claude-mem restart
最終結果
アップデート後、すべてのステータスが正常化しました。
| 項目 | 更新前 (8.0.4) |
更新後 (9.0.12) |
|---|---|---|
| Worker ステータス | エラー | Ready ✅ |
| MCP Ready | - | True ✅ |
| SessionStart hook | Error | Success ✅ |
API確認:
curl -s http://127.0.0.1:37777/api/version # {"version": "9.0.12"}
curl -s http://127.0.0.1:37777/api/readiness # {"status": "ready", "mcpReady": true}
学んだこと・まとめ
- バージョン不整合の罠:
marketplaces(ソース)とcache(ランタイム)のバージョンが乖離すると、予期せぬ挙動を招く。 - Exit Code 3 の意味: フックスクリプトが
3を返す場合は、内部ロジックの不備やバージョン依存のバグを疑う。 - 手動更新フロー: 自動更新がうまくいかない場合は「ソース取得 → キャッシュ配置 → json更新 → 依存関係解決」の順でリカバリ可能。
トラブルシューティング用コマンド
今後同様の問題が発生した際の確認用コマンドです。
# 1. プラグインの最新版(GitHub)との差分確認 cd ~/.claude/plugins/marketplaces/thedotmack git fetch origin && git log HEAD..origin/main --oneline # 2. ワーカーの詳細ステータス確認 claude-mem status curl -s http://127.0.0.1:37777/api/version curl -s http://127.0.0.1:37777/api/readiness