Skip to content

原文(日本語に翻訳)

SessionStart フックの実行を遅延させることで起動パフォーマンスを改善し、インタラクティブ操作可能になるまでの時間を約500ms短縮しました。

原文(英語)

Improved startup performance by deferring SessionStart hook execution, reducing time-to-interactive by ~500ms.

概要

Claude Codeの起動時に実行されるSessionStartフックを遅延実行するよう変更することで、ユーザーが実際に操作できるようになるまでの時間(time-to-interactive)を約500ミリ秒短縮しました。フックは引き続き実行されますが、UIが表示されてインタラクティブ状態になった後に非同期で実行されます。頻繁にClaude Codeを起動するユーザーにとって体感的な改善が期待できます。

基本的な使い方

bash
# Claude Codeを起動するだけで自動的に恩恵を受けられる
claude

# 修正前: SessionStartフック完了後にUIが表示される
# 修正後: UIが即座に表示され、フックはバックグラウンドで実行される

# 起動からインタラクティブ操作可能になるまで約500ms短縮

実践例

ユースケース1: 頻繁な起動・終了を繰り返す開発ワークフロー

bash
# ターミナルからの素早いClaude Code起動
# 複数のプロジェクト間を頻繁に切り替える場合に効果的

# プロジェクトAでの作業
claude "このバグを修正してください"
# ← 約500ms早くプロンプトが表示される

# プロジェクトBに切り替え
cd /path/to/project-b
claude "新機能を追加してください"
# ← こちらも起動が高速

ユースケース2: SessionStartフックを設定している場合

json
// .claude/settings.json
{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "echo 'Session started' >> /tmp/claude-sessions.log"
          }
        ]
      }
    ]
  }
}
bash
# フックが設定されていても起動は高速
# フックはUIが表示された後にバックグラウンドで実行される
claude
# UIがすぐに表示される
# フックはその後バックグラウンドで実行される

ユースケース3: CIパイプラインでの活用

yaml
# GitHub Actions等でのClaude Code使用
steps:
  - name: Claude Codeを使用した処理
    run: |
      # 起動が高速になることでCIパイプライン全体の時間も短縮
      claude --print "このコードをレビューしてください" < code.py

注意点

  • SessionStartフック自体は引き続き実行されます。完全にスキップされるわけではありません
  • フックの遅延実行により、フック完了前にユーザーがコマンドを入力し始める可能性があります
  • フックがセッション状態に依存する重要な初期化処理を行っている場合は、動作への影響を確認してください
  • 約500msの短縮は計測値であり、システム環境によって差異がある場合があります
  • バージョン2.1.47以降で適用される改善です

関連情報