Extension onPostToolUse modifiedResult is not applied to the model's conversation context
- Vorherrschende Sprache
- Shell
- Sterne
- 11.2k
- Forks
- 1.9k
- Ø Merge
- 14 Std. 16 Min.
- Gemergte PRs (30 T.)
- 6
Beschreibung
## 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
Beitragsleitfaden
Rechercherichtung
Beginne mit der Reproduktion in .github/extensions/repro/extension.mjs und verfolge die Verarbeitung von modifiedResult durch onPostToolUse vom Hook über die Vorschau des Tool-Ergebnisses bis zum Gesprächskontext des Modells. Überprüfe, an welcher Stelle das ursprüngliche Ergebnis in den Nachrichtenverlauf gelangt. Als erledigt gilt die Aufgabe, wenn das Modell den modifizierten Text meldet, während die TUI-Vorschau korrekt bleibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- javascript
- Bereich
- cli
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Ruhig
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 48/100