改善
セッション開始ガードを session_guard.py に集約し Bash 許可ダイアログを恒久解消
/init-session・/start・/setup のセッション開始処理は、これまでフラグ書き込み・setup 実行済み判定・init-session 実行済み判定・/setup Phase 4 の setup_done.flag 書き込みを**複合 Bash(if/$()/リダイレクトを含むブロック)**として実行しており、毎セッション開始時や初回 /setup 時に Bash 許可ダイアログが出ていました。複合 Bash は settings.json の allow プレフィックス一致が効かないため事前許可できませんでした。
これらを単一の Python ヘルパー session_guard.py の {mark|check|setup-mark} 3 サブコマンドに集約し、settings.json に Bash(python .claude/skills/init-session/scripts/session_guard.py*) の 1 行 allow を追加することでダイアログを恒久的に解消しました。
仕組み
mark(/init-session):.claude/state/を作成しinit_session.flagにセッション ID を書き込み、SETUP_DONE/SETUP_NEEDEDを出力。check(/start):init_session.flagを読み、現在のセッション ID と一致すればINIT_DONE、不一致ならINIT_NEEDEDを出力。setup-mark(/setupPhase 4):setup_done.flagを書き込む(判定出力なし)。_project_root()はresolve()でパスを正規化(recall_inject.pyと整合)。markが異常終了した場合はSETUP_NEEDED安全側に倒すフォールバックを明記。
後方互換
スキルの利用方法・フラグの配置(.claude/state/・gitignore+配布除外済み)・判定ロジックに変更はありません。公開 API・CLI・DB スキーマに変更なし。破壊的変更なし。