Skip to content

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

@CS-DC

Description

@CS-DC

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 <id>: Error: Failed to read JSONL from
  C:\Users\<user>\.copilot\session-state\<id>\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:

{"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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:permissionsTool approval, security boundaries, sandbox mode, and directory restrictionsarea:pluginsPlugin system, marketplace, hooks, skills, extensions, and custom agentsarea:sessionsSession management, resume, history, session picker, and session state

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions