Mod API リファレンス

session.append

出典: Claude Code 2.1.294 が書き出す型定義 Early access:リリースごとに変更される可能性あり ← 私家版 Claude Mods まとめ

session.append は、会話への行の追加処理そのものです。Claude Code 本体は会話に行を追加するとき、必ずこのイベントを1回発生させ、チェーンの最後で行を保存します。メインの会話でもサブエージェントの会話でも同じです(e.agentId で区別します)。進捗の行や、--resume などによる読み込みは追加ではないため、このイベントは発生しません。

フィールド説明
door行の追加経路: prompt command response tool-result tool-message delivery attachment hook-context note compaction notice
origin行の発生元(送信者、{ kind: 'model' }、{ kind: 'tool', tool }、Claude Code 本体、設定フック、プラグイン)
uuidtranscript 上の id
message行の本体。content 以外のフィールド(type name role isMeta)は変更できず、変更するとフックの失敗として扱われる
  • 書き換えられるのは、テキストブロック(編集、追加、削除、並べ替え)と、tool_result の content と is_error である。画像とドキュメントのブロックは、削除と移動だけができる。
  • thinking ブロック、tool_use ブロック、tool_result の id は、チェーンの最後で元の状態に戻される。
  • Claude Code 本体が追加する行は拒否できない(next を呼ばずに値を返したフックはスキップされ、行は保存される)。拒否できるのは、プラグインが $.session.append で追加しようとした行だけである。
  • 画面、SDK のストリーム、Remote Control には書き換え前の行が一瞬表示されることがある。モデルと transcript ファイルには書き換え後の行だけが渡る。
on('session.append', { door: 'tool-result' }, ($, e, next) =>
  next({ ...e, message: redact(e.message) }))
  .catch(($, e, next) => next({ ...e, message: placeholderFor(e.message) }))

絞り込みの条件に一致する行がありません。