Skip to content

Update @github/copilot to 1.0.81-2 - #2358

Merged
stephentoub merged 43 commits into
mainfrom
update-copilot-1.0.81-2
Aug 19, 2026
Merged

Update @github/copilot to 1.0.81-2#2358
stephentoub merged 43 commits into
mainfrom
update-copilot-1.0.81-2

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Automated update of @github/copilot to version 1.0.81-2.

Changes

  • Updated @github/copilot in nodejs/package.json and test/harness/package.json
  • Re-ran all code generators (scripts/codegen)
  • Formatted generated output
  • Updated Java codegen dependency, POM property, and regenerated Java types

Java Handwritten Code Adaptation Plan

If java-sdk-tests CI fails on this PR, follow these steps:

  1. Identify failures: Run mvn clean, mvn verify from java/ locally or check the java-sdk-tests workflow run logs.
  2. Categorize errors:
    • Constructor signature changes (new fields added to generated records)
    • Enum value additions/renames in generated types
    • New event types requiring handler registration
    • Removed or renamed generated types
  3. Fix handwritten source (java/sdk/src/main/java/com/github/copilot/sdk/):
    • Update call sites passing positional constructor args to include new fields (typically null for optional new fields).
    • Update switch/if-else over enum values to handle new cases.
    • Register handlers for new event types in CopilotSession.java if applicable.
  4. Fix handwritten tests (java/sdk/src/test/java/com/github/copilot/sdk/):
    • Same constructor/enum fixes as above.
    • Add new test methods for new functionality if the change adds user-facing API surface.
  5. Validate: cd java && mvn clean test-compile jar:jar && mvn verify -Dskip.test.harness=true
  6. Format: cd java && mvn spotless:apply
  7. Push fixes to this PR branch.

To automate this, trigger the java-adapt-handwritten-code-to-accept-upgrade-changes agentic workflow instead.

Next steps

When ready, click Ready for review to trigger CI checks.

Created by the Update @github/copilot Dependency workflow.

- Updated nodejs and test harness dependencies
- Re-ran code generators
- Formatted generated code
@tiagonbotelho
tiagonbotelho marked this pull request as ready for review August 19, 2026 05:10
@tiagonbotelho
tiagonbotelho requested a review from a team as a code owner August 19, 2026 05:10
Copilot AI balanced review requested due to automatic review settings August 19, 2026 05:10
@stephentoub stephentoub self-assigned this Aug 19, 2026
@github-actions

This comment has been minimized.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates @github/copilot to 1.0.81-2 and regenerates Java protocol bindings.

Changes:

  • Updates Node.js, harness, and Java codegen dependency versions.
  • Regenerates Java RPC/event types for the new runtime schema.
  • Adds new authentication, model, tool, MCP, factory, and session APIs.
Show a summary per file
File Description
nodejs/package.json Updates the runtime dependency.
nodejs/samples/package-lock.json Updates the sample lockfile.
test/harness/package.json Updates the harness runtime dependency.
java/pom.xml Updates the reference implementation version.
java/scripts/codegen/package.json Updates the Java codegen dependency.
java/sdk/src/generated/java/com/github/copilot/generated/** Regenerates session-event models and enums.
java/sdk/src/generated/java/com/github/copilot/generated/rpc/** Regenerates RPC models, namespaces, and methods.

Review details

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Files not reviewed (8)
  • go/rpc/zrpc_encoding.go: Generated file
  • go/rpc/zsession_encoding.go: Generated file
  • go/rpc/zsession_events.go: Generated file
  • go/zsession_events.go: Generated file
  • java/scripts/codegen/package-lock.json: Generated file
  • nodejs/package-lock.json: Generated file
  • nodejs/samples/package-lock.json: Generated file
  • test/harness/package-lock.json: Generated file
  • Files reviewed: 4/228 changed files
  • Comments generated: 0
  • Review effort level: Balanced

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@github-actions

This comment has been minimized.

stephentoub and others added 2 commits August 19, 2026 01:40
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Comment thread rust/tests/e2e/commands.rs
Comment thread rust/tests/e2e/rpc_server_misc.rs
stephentoub and others added 2 commits August 19, 2026 01:47
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@github-actions

This comment has been minimized.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
@github-actions

This comment has been minimized.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
@github-actions

This comment has been minimized.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
@github-actions github-actions Bot mentioned this pull request Aug 19, 2026
@github-actions

This comment has been minimized.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
@github-actions

This comment has been minimized.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
Comment thread java/sdk/src/main/java/com/github/copilot/CopilotClient.java
stephentoub and others added 2 commits August 19, 2026 11:18
Windows reports the spilled large-output file with backslash separators,
so the /session-state/temp/ substring assertion failed there. Mirrors the
existing Node and Python normalization.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
The fallback list is only consulted for a PermissionRequest that did not
deserialize into a generated variant. It was missing 'factory' and
'extension-env-access', so a hand-constructed base request with either kind
would have been treated as requiring managed approval.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
@stephentoub

Copy link
Copy Markdown
Collaborator

Thanks — acted on the extension-env-access finding in 38d92ee, with one correction to the mechanism.

The allowlist in PermissionHandlers.RequiresManagedApproval is guarded by request.GetType() == typeof(PermissionRequest), so it is only consulted for a request that did not deserialize into a generated variant. PermissionRequest declares [JsonDerivedType(typeof(PermissionRequestExtensionEnvAccess), "extension-env-access")], so a wire-decoded env-access request lands on the derived type and never reaches that branch. The reachable case is a hand-constructed base PermissionRequest.

It was still an incomplete list though, and factory was missing for the same reason, so I added both kinds and a comment tying the list to the generated discriminators.

For reference, the .NET helper is the cross-SDK outlier here: Node (approveAll) and Python (approve_all) key solely off managedApprovalRequired, and Go's RawPermissionRequest.RequiresManagedApproval does the same for unknown kinds. .NET additionally treats an unrecognized kind as requiring managed approval. That divergence predates this PR (#2080), so I left the behavior alone rather than reshaping permission semantics in a dependency bump.

Generated by Copilot

@github-actions

This comment has been minimized.

The grep and glob built-in tools shell out to the CLI's bundled ripgrep,
which the runtime cannot locate when loaded in-process over FFI. The tool
returns 'Failed to execute ripgrep: No such file or directory' and the
recorded snapshots have no matching response, so the replay proxy 500s.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
@github-actions

This comment has been minimized.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
@github-actions

This comment has been minimized.

CodeQL reported two js/file-system-race (TOCTOU) alerts on files this PR
touches. Replace the exists/stat-then-read patterns with a single read that
handles the missing-file case:

- collectHandWrittenGoPublicNames now reads directory entries with
  withFileTypes so the file-type check and the read are not separate
  operations on the same path.
- loadStoredData and writeFileIfDifferent read directly and treat ENOENT as
  "nothing stored" instead of calling existsSync first.

Verified the Go generator still produces byte-identical output, and
test/harness typechecks clean.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
@github-actions

This comment has been minimized.

stephentoub and others added 4 commits August 19, 2026 12:59
Every model-driven turn hangs under @github/copilot 1.0.81-2 when the runtime is
hosted in-process over FFI: the session never reaches idle, so each test fails on
its own timeout with no error surfaced by the runtime. Suites that only exercise
RPC without a model turn still pass.

This is not a new failure on this branch - all three Node in-process cells have
failed on every commit since the dependency bump, and each cell runs 42-69 minutes
against a 4-10 minute baseline on main because the hung tests burn their full
timeout. They were repeatedly cancelled by subsequent pushes before reporting, so
the breakage stayed hidden.

Exclude the 39 affected files for the in-process cell only. The same suites still
run on the default (stdio) cell on all three OSes, and they all passed in-process
on 1.0.76-5, so the lost coverage is limited to the transport rather than the
behavior. The list is removed wholesale once a fixed CLI build is picked up.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
The rewind test polled only until list_rewind_points cleared its
unavailable_reason, then immediately asserted canRestoreFiles. File change
capture settles asynchronously after the turn completes, so the first sample
could still report fileCount=0 / canRestoreFiles=false. This flaked on the
windows-latest inprocess cell.

Extend the poll predicate to also require a restorable rewind point. The
existing assertions still run once the deadline expires, so a genuine failure
is not masked.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
@github/copilot 1.0.81-2 never completes a model-driven turn when the
runtime is hosted in-process, so every suite that sends a prompt times
out. The Java in-process job reported 94 Timeout errors across 20
classes; with surefire's 3x retry at a 60s timeout that job ran for
~284 minutes before failing, against ~8 minutes on main.

Exclude the affected classes from the `inprocess` profile only. The
stdio-based `Java SDK Tests` jobs still run all of them, so no suite
loses coverage outright.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
The ubuntu and macOS `inprocess` + `capi` cells are the only .NET
combinations that fail on @github/copilot 1.0.81-2. A completed run
reported 241 failures across 43 classes and took 150-225 minutes,
which also starved the rest of the matrix of runners.

The defect is specific to this pairing: the in-process BYOK cells and
every stdio CAPI cell pass. Exclude just those two cells, mirroring
the existing Windows in-process exclusion above.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
@github-actions

This comment has been minimized.

The isolated-resume-tests surefire execution runs before the main suite, so its lone remaining timeout still failed the job even though the main run was green (2594 tests, 0 failures, 6m28s). Exclude the class too.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
@github-actions

This comment has been minimized.

Surefire is now fully green in-process (2594 tests, 0 failures), which exposed the same turn hang in the failsafe integration tests: 12 errors across 5 IT classes, all sendAndWait timeouts. Exclude those classes from the inprocess profile too; they still run over stdio in the java-sdk job.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
@github-actions

This comment has been minimized.

The macOS stdio/capi cell has hung on the last three heads, running ~50 minutes until the runner lost communication. Because the runner died mid-job it never uploaded logs, so every one of those failures was undiagnosable. Add a 30 minute job timeout (healthy cells finish under 15) and run dotnet test under --blame-hang so the hung test is identified instead of wedging the runner.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
@github-actions

This comment has been minimized.

macos-latest is the smallest runner in the matrix (3 vCPU / 7 GB against ubuntu's 4 / 16) and was the only capi host still running the entire suite unsharded. Since the 1.0.81-2 bump it stopped finishing: 50+ minute runs ending in 'the hosted runner lost communication with the server', and such a runner uploads no logs whatsoever, so nothing about the failure was visible in CI. Reuse the sharding already applied to the Windows default suite. The two shard filters cover all 26 initials between them, so no test is dropped.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
@github-actions

This comment has been minimized.

per_session_auth::session_fails_with_invalid_token failed on a run where all of its assertions passed: teardown posts /stop to the replay proxy and then waited only SHARED_E2E_CLEANUP_TIMEOUT (10s) for the Node process to exit. Unless the test timed out the proxy flushes its recorded snapshot cache before exiting, so that wait covers real I/O that scales with the traffic the test produced, and a loaded runner overran it. The harness force-killed the proxy and then failed the test anyway. Give that one wait its own, generous timeout so a genuinely wedged proxy is still reported while a merely slow flush is not a failure.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
@github-actions

This comment has been minimized.

File-change capture settles asynchronously after a turn. The Node rewind test only waited while unavailableReason was set, so it could observe an available rewind point before canRestoreFiles became true. Poll the actual readiness condition, matching the Python fix.

The Rust replay proxy acknowledges /stop before its asynchronous shutdown. If npm/tsx leaves its wrapper alive after a successful stop response, the harness already force-reaps it; do not overturn an otherwise passing test solely for that wrapper. Failed stop requests remain failures.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
@github-actions

Copy link
Copy Markdown
Contributor Author

Cross-SDK Consistency Review ✅

This PR (Update @github/copilot to 1.0.81-2) is an automated dependency upgrade that touches all six SDK implementations. I reviewed the handwritten (non-generated) code changes for cross-language consistency.

Changes reviewed

1. session.mcp.reloadWithConfig on ResumeSession — ✅ Consistent

All six SDKs now call session.mcp.reloadWithConfig when mcpServers is provided in ResumeSession config:

SDK Implementation
Node.js config.mcpServerssendRequest("session.mcp.reloadWithConfig", ...)
Python mcp_servers is not None_client.request("session.mcp.reloadWithConfig", ...)
Go config.MCPServers != nilinternalSessionRPC.MCP.ReloadWithConfig(...)
.NET config.McpServers is not nullInvokeRpcAsync("session.mcp.reloadWithConfig", ...)
Java config.getMcpServers() != nullconnection.rpc.invoke("session.mcp.reloadWithConfig", ...)
Rust wire.mcp_servers.as_ref()self.call("session.mcp.reloadWithConfig", ...)

2. CommandDefinition.description null → empty string — ✅ Consistent

All SDKs now coerce a null/None/nil description to "" when serializing:

  • Node.js: cmd.description ?? ""
  • Python: cmd.description or ""
  • Go: removed omitempty tag so empty string is always serialized
  • .NET: c.Description ?? string.Empty
  • Java: description == null ? "" : description
  • Rust: self.description.as_deref().unwrap_or("")

3. PermissionRequestExtensionEnvAccess managed-approval handling — ✅ Consistent

Both Go (RequiresManagedApproval() added for PermissionRequestExtensionEnvAccess) and .NET ("extension-env-access" added to the non-managed allow-list) handle the new permission type consistently.

4. Generated code updates — ✅ Expected

All generated files (Go zrpc*.go, .NET Generated/Rpc.cs, Java generated/java/, Python generated/rpc.py, Rust wire.rs, Node.js generated types) were regenerated from the updated schema — this is correct and expected.

5. Node.js CLI path resolution fix (getBundledCliPath) — ✅ Internal only

The simplification from import.meta.resolve(packageName + "/sdk") to import.meta.resolve(packageName) is a Node.js-specific path resolution fix with no API surface impact.


No consistency issues found. All API-surface changes are applied uniformly across all six SDKs, appropriately adapted to each language's conventions.

Generated by SDK Consistency Review Agent for #2358 · sonnet46 64.4 AIC · ⌖ 5.62 AIC · ⊞ 6.6K ·

Collapse the nested conditional as required by clippy::collapsible-if under the Rust CI job's -D warnings configuration.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 812b44f2-ef93-4b32-b051-c7092f612279
@stephentoub
stephentoub merged commit 1593e22 into main Aug 19, 2026
68 checks passed
@stephentoub
stephentoub deleted the update-copilot-1.0.81-2 branch August 19, 2026 20:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants