github / github/copilot-cli

VS Code Copilot Chat 0.47.1 cannot open CLI 1.0.46 sessions: missing phemeral on permission.requested events

未关闭
#3,284 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
area:permissions area:plugins area:sessions
主要语言
Shell
星标
11.2k
派生
1.9k
平均合并
14 小时 16 分钟
30 天内合并 PR
6

描述

## Summary

VS Code Copilot Chat extension (0.47.1) fails to open any CLI session that contains `permission.requested` (or `permission.completed`) events written by Copilot CLI 1.0.46. The extension's Zod schema requires those events to have `"ephemeral": true` at the root, but the CLI does not emit that field.

This makes it impossible to attach VS Code to a CLI session that has ever asked for a permission — i.e. virtually any non-trivial session.

## Environment

- Copilot CLI: **1.0.46** (latest per `copilot update`)
- VS Code: **1.119.1**
- Copilot Chat extension: **0.47.1**
- OS: Windows 11

## Repro

1. Start a session in Copilot CLI and let it perform any action that triggers a permission prompt (e.g. edit a file).
2. In VS Code, open the Copilot Chat sidebar and try to open that CLI session.

## Expected

Session opens and shows the conversation history.

## Actual

Extension log shows, repeatedly:

```
[error] [CopilotCLI] Failed to parse session : Error: Failed to read JSONL from
C:\Users\\.copilot\session-state\\events.jsonl:
Error: Invalid event at line N: ephemeral: Invalid literal value, expected true.
Event: {"type":"permission.requested","data":{"requestId":"...","permissio...
```

The session pane stays empty.

## Root cause (schema mismatch)

The CLI writes `permission.requested` events with this top-level shape:

```json
{"type":"permission.requested","data":{...},"id":"...","timestamp":"...","parentId":"..."}
```

No `ephemeral` property is present. The extension's parser rejects them with `ephemeral: Invalid literal value, expected true`, i.e. its schema has something like `ephemeral: z.literal(true)` as a required field on these events.

Same error fires for every `permission.requested` event in the file (16 occurrences in my session).

## Suggested fix

Either:
- **CLI side:** emit `"ephemeral": true` on `permission.requested` / `permission.completed` events, or
- **Extension side:** make `ephemeral` optional (or default to `true`) in the Zod schema for permission events.

Whichever is cheaper — but it's currently a hard incompatibility between the latest CLI release and the latest extension release.

## Workaround

After ending the CLI session, patch `events.jsonl` to inject `"ephemeral":true` into every `permission.*` event. Risky because it may break the CLI's own resume logic, so not great as a real solution.

贡献指南

打开贡献指南

调研方向

Reproduce the failure by opening a CLI session containing permission.requested or permission.completed events, then inspect the parser and its Zod schema for events.jsonl. Compare the required ephemeral field with the event shape emitted by the CLI and determine whether the CLI or extension owns the fix. Done means such sessions open in VS Code and their conversation history is parsed successfully.

由索引模型根据 Issue 内容生成。

评估

技术栈
shell, vscode
领域
cli, tooling
Issue 类型
缺陷
难度
3/5
预计耗时
1-2 天
活跃度
冷清
描述清晰度
基本清楚
新手友好度
55/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。