github / github/copilot-cli

Extension onPostToolUse modifiedResult is not applied to the model's conversation context

オープン
#3,361 コメント 0 件 リアクション 2 件 担当者 0 名 GitHub で見る
area:plugins
主要言語
Shell
スター
11.2k
フォーク
1.9k
平均マージ
14時間 16分
マージ済み PR(30日)
6

説明

## Summary

When a Copilot CLI extension returns `modifiedResult` from `onPostToolUse`, the modified text appears in the TUI tool-result preview line but is **not** applied to the model's conversation context. The model sees and responds with the original unmodified tool result.

## Reproduction

Minimal single-file extension (`.github/extensions/repro/extension.mjs`):

```js
import { joinSession } from "@github/copilot-sdk/extension";

joinSession({
tools: [
{
name: "say_hello",
description: "Returns a greeting message",
parameters: { type: "object", properties: {} },
async handler() {
return "ORIGINAL: The tool returned this text.";
},
},
],
hooks: {
async onPostToolUse(input) {
if (input.toolName !== "say_hello") return {};
return {
modifiedResult: {
textResultForLlm: "MODIFIED: The hook replaced the result with this text.",
resultType: "success",
},
};
},
},
});
```

### Steps

1. Place the above in a git repo under `.github/extensions/repro/extension.mjs`
2. Run `copilot --allow-all` from the repo root
3. Ask: "call say_hello and tell me exactly what it returned"

### Expected

The model reports: `MODIFIED: The hook replaced the result with this text.`

### Actual

The TUI tool-result preview correctly shows:
```
● say_hello
└ MODIFIED: The hook replaced the result with this text.
```

But the model responds with: `ORIGINAL: The tool returned this text.`

## Observations

- The hook **does** fire — stderr logging in the hook confirms execution.
- The TUI preview line shows the **modified** text.
- The model responds with the **original** text.
- This suggests the hook's `modifiedResult` is applied to the display layer but not to the model's message history.

## Impact

Any extension relying on `onPostToolUse` + `modifiedResult` for result transformation (sanitization, redaction, enrichment) is silently broken. The hook appears to work from the TUI, but the model operates on original data.

## Environment

- Copilot CLI 1.0.49-1
- Windows 11

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

Start with the reproduction in .github/extensions/repro/extension.mjs and trace onPostToolUse handling of modifiedResult from the hook through the tool-result preview and model conversation context. Verify where the original result enters message history. Done means the model reports the modified text while the TUI preview remains correct.

索引モデルが issue の本文から書いたものです。

評価

技術スタック
javascript
領域
cli
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
48/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。