Skip to content

原文(日本語に翻訳)

/plugin 操作の後にプラグインの Stop/SessionEnd 等のフックが発火しなくなっていた問題を修正しました

原文(英語)

Fixed plugin Stop/SessionEnd/etc hooks not firing after any /plugin operation

概要

/plugin コマンド(プラグインの有効化・無効化・リロードなど)を実行した後、プラグインが定義する StopSessionEnd、その他のライフサイクルフックが発火しなくなるバグがありました。これにより、プラグインのクリーンアップ処理やセッション終了時の後処理が実行されない問題が発生していました。修正後は /plugin 操作後もフックが正常に発火します。

基本的な使い方

この修正は自動的に適用されます。/plugin 操作後もフックが正常に動作するようになります。

bash
# プラグインを操作した後もフックが正常に発火する
/plugin enable my-plugin
# → Stop フック、SessionEnd フックが正常に動作する

実践例

プラグインのライフサイクルフック

javascript
// プラグインの定義例(~/.claude/plugins/my-plugin/index.js)
module.exports = {
  hooks: {
    // セッション開始時
    SessionStart: async () => {
      console.log("セッション開始");
      await initializeResources();
    },

    // 停止時(Ctrl+C など)
    Stop: async () => {
      console.log("停止処理");
      await cleanup();
    },

    // セッション終了時
    SessionEnd: async () => {
      console.log("セッション終了");
      await saveState();
    }
  }
};
bash
# /plugin 操作後もフックが正常に発火するようになった
/plugin reload my-plugin

# セッション終了時
[Ctrl+C]
# → Stop フックが正常に実行される
# → SessionEnd フックが正常に実行される

影響を受けていたシナリオ

bash
# 修正前: /plugin 操作後にフックが発火しない
/plugin list         # プラグイン一覧を表示
# → この後 Stop/SessionEnd フックが発火しなくなっていた

/plugin enable foo   # プラグインを有効化
# → この後フックが発火しなくなっていた

/plugin disable bar  # プラグインを無効化
# → この後フックが発火しなくなっていた

# 修正後: すべての /plugin 操作後もフックが正常に発火する

注意点

  • フックの発火はプラグインのクリーンアップ処理に重要です
  • Stop フックはセッションの中断時(Ctrl+C)に発火します
  • SessionEnd フックはセッションが正常終了する際に発火します
  • プラグインがデータを永続化する場合、これらのフックが正しく動作することが重要です

関連情報