Skip to content

Native Plan edits bypass a custom SessionFs provider #2814

Agent suggestions

Public preview

Description

@nicolasdossantos

Summary

With an absolute SessionStatePath and a custom SessionFsProvider, the native edit tool reports success for the canonical plan.md path but writes an operating-system file instead of updating the provider. SDK Plan readback remains stale.

Versions

  • GitHub.Copilot.SDK: 1.0.17-preview.7
  • Bundled Copilot CLI: 1.0.93-1
  • OS: Windows
  • Target framework: net10.0

Minimal standalone reproduction

Run:

dotnet run

The repro:

  1. Configures an absolute SessionStatePath with a custom provider.
  2. Writes # Host plan through Plan.UpdateAsync.
  3. Calls the native edit tool on the exact path returned by Plan.ReadAsync.
  4. Reads the Plan again through the SDK and checks both the provider write count and operating-system path.

Expected

The native edit goes through the configured provider:

  • SDK readback returns # Native update.
  • The provider records a second Plan write.
  • No operating-system file is created at the virtual session-state path.

Actual

The native tool reports success, but state splits:

Observation Value
SDK content before edit # Host plan
SDK content after edit # Host plan
Provider Plan writes before edit 1
Provider Plan writes after edit 1
Operating-system file created Yes
Operating-system file content # Native update

A scripted real agent turn reproduces the same behavior. Native create reaches the provider, while the subsequent native edit claims success, bypasses SessionFs, and leaves SDK/provider state unchanged.

This is related to, but distinct from, #2698. The failure is not only permission evaluation: the successful write itself bypasses the registered provider.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions