settings.json

hooks.SessionStart

array

新しいセッションが開始された際に実行されるフック。

使い方・用途

  • セッション開始時に Python の仮想環境を自動で有効化したり、プロジェクト固有の環境変数を一括でロードしたりして、即座に開発可能な状態を整えます。
英語原文(公式ドキュメントより)

Hooks that run when a new session starts

関連する変更履歴

v2.1.277(1件)

Fixed
SessionStart フックが出力を出力した場合に、/clear 後に再開したセッション(--continue--resume を含む)で最初のメッセージの一部が欠落し、プロンプトキャッシュが完全にミスする問題を修正した。
英語原文を表示
Fixed sessions continued after /clear (restart, --continue, --resume) missing part of their first message when a SessionStart hook printed output, causing a full prompt-cache miss

変更前

SessionStart フックが出力を出力した場合、/clear 後に再開されたセッション(--continue--resume での再開を含む)では、最初のメッセージの一部が欠落して送信され、プロンプトキャッシュが完全にミス(full prompt-cache miss)していた。

変更後

修正後は、SessionStart フックが出力を出力しても、再開されたセッションの最初のメッセージが完全な形で送信され、フルのプロンプトキャッシュミスが発生しなくなった。

ユーザーへの恩恵

SessionStart フックを使う環境でセッションを再開しても、最初のメッセージが正しく送信され、不要なプロンプトキャッシュミスによるトークン消費や応答の遅延を避けられるようになった。

関連ドキュメント

v2.1.271(1件)

Improved
フックのフィードバックを改善: SessionStart、UserPromptSubmit、PreToolUse、SessionEnd のいずれかのフック実行中は、スピナーにその旨と経過時間を表示し、Esc で SessionStart フックの完了待ちになっているプロンプトをキャンセルできるようにした。
英語原文を表示
Improved hook feedback: while a SessionStart, UserPromptSubmit, PreToolUse or SessionEnd hook runs, the spinner says so with elapsed time, and Esc cancels a prompt waiting on a SessionStart hook

変更前

フックの実行中は、スピナーにはフック名などが statusMessage で設定されていない限り表示されず、何が実行されているか分かりにくかった。特に SessionStart フックが完了するまでプロンプト送信は待たされ、途中で中断する手段もなかった。

変更後

SessionStart・UserPromptSubmit・PreToolUse・SessionEnd フックの実行中、スピナーにフックが動いていることと経過時間が表示されるようになった。さらに、SessionStart フックの完了待ちで停止しているプロンプトを Esc でキャンセルできるようになった。

ユーザーへの恩恵

どのフックが実行中かと経過時間が分かるようになり、遅い SessionStart フックで待たされた場合も Esc で即座にキャンセルできるようになる。

v2.1.268(2件)

Improved
--continue / --resume の改善: SessionStart フックの完了を待たずに会話が即座に表示されるようになり、最初のメッセージでトランスクリプト全体を再読み込みしなくなった
英語原文を表示
Improved --continue / --resume: the conversation appears immediately instead of waiting for SessionStart hooks, and the first message no longer re-reads the whole transcript

変更前

--continue / --resume で再開する際、SessionStart フックが完了するまで会話が表示されず、最初のメッセージ送信時にトランスクリプト全体を再処理して読み込み直していた。

変更後

セッション開始フックの完了を待たずに会話が即座に表示されるようになり、最初のメッセージ送信時にトランスクリプト全体を再読み込みしなくなる。

ユーザーへの恩恵

再開直後にすぐ会話を確認できるため、待ち時間が減り、最初のメッセージの応答が速くなる。

関連ドキュメント

Fixed
[VSCode] SessionStart フックが設定されている環境で、ウィンドウのリロード後にセッション名が最後のプロンプトに戻る問題を修正した。
英語原文を表示
[VSCode] Fixed session names reverting to the last prompt after a window reload when a SessionStart hook is configured

変更前

SessionStart フックが設定されている場合、VSCode でウィンドウをリロードするとセッション名が最後のプロンプトの内容で上書きされていた。

変更後

ウィンドウをリロードすると、SessionStart フックが設定されている環境ではセッション名が最後のプロンプトに戻ってしまっていた。修正後は、SessionStart フックが設定されていてもウィンドウリロード後にユーザーが設定したセッション名が維持される。

ユーザーへの恩恵

セッション名がリロード後も保持されるため、プロンプトベースの名前に戻されず、セッションを識別しやすくなる。

関連ドキュメント

v2.1.265(1件)

Fixed
リモートコントロールから /clear を実行した際、SessionStart フックの完了やターミナル上で開いているダイアログへの対応を待たずに処理を完了するよう修正した。
英語原文を表示
Fixed /clear from Remote Control waiting on SessionStart hooks and on open terminal dialogs before completing

変更前

リモートコントロールから /clear を実行すると、SessionStart フックの完了やターミナル上で開いているダイアログへの応答を待つ間、クリア処理が完了せずにブロックされていた。

変更後

リモートコントロールから /clear を実行すると、SessionStart フックの完了やターミナル上の未応答ダイアログの解消を待たずに、クリア処理が即座に完了する。

ユーザーへの恩恵

リモートコントロール利用時に、フックの完了やダイアログへの対応を待たずにセッションを即座にクリアできるようになる。

関連ドキュメント

v2.1.251(1件)

Added
モデルの切り替えをブロック、確認、または注釈する PreModelSwitchPostModelSwitch フックイベントを追加しました。SessionStart の再開フックは、セッションの古さと再キャッシュの推定コストを受け取るようになりました。
英語原文を表示
Added PreModelSwitch and PostModelSwitch hook events (block, confirm, or annotate a model switch); SessionStart resume hooks now receive session staleness and the estimated re-cache cost

変更前

以前はモデル切り替えのフックイベントが存在しませんでした。セッション再開時のフックは、セッションの状態やコストに関する情報を取得できませんでした。

変更後

モデル切り替えの前後でフックイベントが発火し、セッションの状態やコスト情報を取得できるようになりました。これにより、セッションの再開時のフックがセッションの古さと再キャッシュコストを正確に把握できるようになります。

ユーザーへの恩恵

開発者はセッションの状態に基づいてモデル切り替えを制御できるようになり、コストを最適化できます。

v2.1.239(1件)

Changed
クラウドセッションにおいて、長い時間を要する SessionStartSetup フックを実行している最中にも、リモートセッションがアクティブキープアライブ(接続維持信号)を送信し続けることで、処理の途中でコンテナがアイドルと判定されて強制破棄されるのを防止しました。
英語原文を表示
Remote sessions keep sending keep-alives while a long SessionStart or Setup hook runs, so the container is not idle-reaped mid-hook

変更前

クラウドコンテナ上で重い環境構築や依存関係のインストールを実行する SetupSessionStart のスタートアップフックが数分間にわたり走り続けると、外部への対話トラフィックがないため、クラウドホストから「通信が途絶えた(アイドル状態)」とみなされてコンテナを途中で強制終了されることがありました。

変更後

フックが動いている裏で、バックグラウンドにて継続的なハートビート通信を自動で維持します。これにより、初期設定プロセスの長さにかかわらず、セッション環境が完了するまで勝手に刈り取られることなく保護されます。

ユーザーへの恩恵

重たい依存関係の解決を行う初期設定スクリプトを実行した際に、途中でセッションが切断されてやり直す羽目になる事態を防げます。

v2.1.214(1件)

Changed
SessionStart フックにおいて、セッションがフォークで開始された場合、ソースを resume ではなく fork と報告するように変更しました。
英語原文を表示
Changed SessionStart hooks to report source "fork" when a session begins as a fork instead of "resume"

変更前

フォークされたセッションも復帰(resume)として記録され、イベントの発生源が区別できていませんでした。

変更後

フォーク実行による開始であることを明確に判別できるようになりました。

ユーザーへの恩恵

ログやイベント監視において、セッションの発生経緯が正確に特定できます。

v2.1.204(1件)

Fixed
ヘッドレスセッションのSessionStartフックにおいて、フックイベントがストリーミングされない問題を修正しました。これにより、フックの実行中にリモートワーカーがアイドル状態とみなされて強制終了される問題が解消されます。
英語原文を表示
Fixed hook events not streaming during SessionStart hooks in headless sessions, which could cause remote workers to be idle-reaped mid-hook

変更前

CI環境などのヘッドレスセッションでSessionStartフックを実行する際、イベントが適切にストリーミングされませんでした。そのため、長時間かかるフック処理の途中でリモートワーカーが「通信なし」と判定され、処理が完了する前に接続が切断されることがありました。

変更後

SessionStartフックの実行中もイベントが正しくストリーミングされるようになり、アクティブな状態が維持されます。

ユーザーへの恩恵

自動化されたワークフローやCI/CDパイプラインにおいて、初期化フックが途中でタイムアウトしたり中断されたりする心配がなくなり、大規模なプロジェクトのセットアップを安定して行えるようになります。

関連ドキュメント

v2.1.199(1件)

Fixed
SessionStart、Setup、およびSubagentStartフックが終了コード2で終了する際、標準エラー出力(stderr)を隠してしまう問題を修正し、内容がトランスクリプトに表示されるようにしました。
英語原文を表示
Fixed SessionStart, Setup, and SubagentStart hooks silently hiding stderr when exiting with code 2 — the error is now shown in the transcript

変更前

フック処理でエラーが発生してもその詳細が隠蔽され、何が原因で失敗したのかを確認できませんでした。

変更後

エラー内容がトランスクリプト上に明示されるようになり、デバッグが容易になりました。

ユーザーへの恩恵

フックの設定やスクリプトに問題がある場合でも、迅速に原因を把握して修正できます。

v2.1.152(2件)

Added
SessionStart フックが reloadSkills: true を返せるようになり、フックによってインストールされたスキルを同じセッションですぐに利用可能になりました。
英語原文を表示
SessionStart hooks can now return reloadSkills: true to re-scan skill directories, making skills installed by the hook available in the same session

変更前

セッション開始時のフックで新しいスキルをセットアップしても、モデルがそれらを認識するのは次のセッションからになるというタイムラグがありました。

変更後

フックの実行完了と同時にスキルの再読み込みが行われるため、動的に追加されたコマンドも初回から即座に使用可能になります。

ユーザーへの恩恵

環境構築スクリプトなどをフックに組み込んだ際、自動セットアップされたツールをすぐに Claude に使わせることができます。

関連ドキュメント

Added
SessionStart フックが hookSpecificOutput.sessionTitle を通じて、起動時やレジューム時のセッションタイトルを設定できるようになりました。
英語原文を表示
SessionStart hooks can now set the session title via hookSpecificOutput.sessionTitle on startup and resume

変更前

セッションのタイトルは自動生成されるか手動で変更する必要があり、フックの処理結果に基づいた動的な命名はできませんでした。

変更後

フックが特定のブランチ名やタスク内容に基づいてセッションタイトルを決定し、/resume 一覧やターミナルのタイトルに反映させることができます。

ユーザーへの恩恵

多数のバックグラウンドセッションを並行して実行している場合でも、各セッションの目的を識別しやすくなります。

関連ドキュメント

v2.1.142(1件)

Improved
特定のフックイベントで不適切なフックタイプを設定した場合のエラーメッセージを改善
英語原文を表示
Improved hook configuration error: configuring a prompt- or agent-type hook for SessionStart/Setup/SubagentStart now shows a clear "use a command-type hook instead" error

変更前

SessionStart などのイベントにプロンプト型やエージェント型のフックを誤って設定した際、原因の分かりにくいエラーが発生していました。

変更後

「代わりにコマンド型(command-type)フックを使用してください」という明確な解決策を提示するメッセージが表示されるようになりました。

ユーザーへの恩恵

フック機能の高度なカスタマイズを行う際に、設定ミスを迅速に自己解決できるようになります。

関連ドキュメント

v2.1.136(1件)

Fixed
CLAUDE_ENV_FILE を利用した SessionStart フックによる環境変数が、セッション再開やクリア後に無効になる問題を修正しました。
英語原文を表示
Fixed env vars from CLAUDE_ENV_FILE SessionStart hooks going stale after /resume or /clear

変更前

セッションを跨いで環境変数を維持するための仕組みが、リセットや再開コマンドによって上書き・消失してしまい、都度手動での再設定が必要でした。

変更後

環境変数の永続化管理が修正され、セッションの再開やリセットを行ってもフックで設定した環境が正しく維持されるようになりました。

ユーザーへの恩恵

ツール実行に必要な環境変数を一度設定すれば、セッションの状態が変わっても一貫して使い続けることができます。

関連ドキュメント

v2.1.111(1件)

Changed
Windowsにおいて CLAUDE_ENV_FILE および SessionStart フックで生成された環境変数が正しく適用されるようになりました。
英語原文を表示
Windows: CLAUDE_ENV_FILE and SessionStart hook environment files now apply (previously a no-op)

変更前

Windows環境ではこれらが機能しておらず、仮想環境の自動有効化やカスタム環境変数の永続化が動作していませんでした。

変更後

Linux/macOSと同様の動作がサポートされ、フックを利用した高度なワークフロー構築が可能になりました。

ユーザーへの恩恵

Windows開発者も、プロジェクト開始時にPythonの仮想環境を自動でアクティベートするといった効率化の恩恵を受けられます。

関連ドキュメント

v2.1.73(1件)

Fixed
セッションを再開した際に、SessionStart フックが2回重複して実行される問題を修正
英語原文を表示
Fixed SessionStart hooks firing twice when resuming a session via --resume or --continue

変更前

--resume--continue を使用すると、初期化スクリプトが必要以上に実行され、セットアップ時間が無駄にかかっていました。

変更後

再開時のライフサイクルイベントが適切に整理され、フックは期待通り1回のみ実行されるようになりました。

ユーザーへの恩恵

セッション開始時の待ち時間が短縮され、プロジェクト固有の環境構築がより正確に行われます。

関連ドキュメント

v2.1.47(1件)

Improved
SessionStartフックの実行を遅延させることで、起動パフォーマンスを改善し、インタラクティブになるまでの時間を約500ミリ秒短縮しました。
英語原文を表示
Improved startup performance by deferring SessionStart hook execution, reducing time-to-interactive by ~500ms.

変更前

Claude Codeの起動時、SessionStartフックが即座に実行されるため、初期化に時間がかかり、ユーザーが操作可能になるまでの時間が長くなっていました。

変更後

Claude Codeの起動パフォーマンスが改善されました。SessionStartフックの実行が遅延されるようになり、ユーザーが操作可能になるまでの時間が約500ミリ秒短縮されました。

ユーザーへの恩恵

Claude Codeの起動が速くなり、開発者はすぐに作業を開始できるようになりました。これにより、開発サイクルの初期段階での待ち時間が減り、生産性が向上します。

v2.1.2(1件)

Added
SessionStart フックの入力に agent_type を追加し、--agent 指定時にその値を格納するように変更
英語原文を表示
Added agent_type to SessionStart hook input, populated if --agent is specified

変更前

フックの実行時にどのエージェントが使用されているかの情報が不足しており、特定のカスタムエージェントが起動した際に連動した処理を行うことが困難でした。

変更後

SessionStart イベントの JSON コンテキストに agent_type フィールドが含まれるようになり、--agent フラグで指定されたエージェント名をフック内で識別できるようになります。

ユーザーへの恩恵

カスタムエージェントの種類に応じた初期化処理や環境設定をフックで自動化できるようになり、ワークフローの柔軟性が向上します。

関連ドキュメント

v1.0.62(1件)

Changed
Hooks: Added SessionStart hook for new session initialization