Conversation
…uides - Remove public/technical preview language across root + all SDK READMEs - Match copilot-agent-runtime GA wording (lowercase 'generally available', no banners) - Add docs/setup/multi-tenancy.md, docs/features/cloud-sessions.md, docs/features/fleet-mode.md - Split cloud sessions out of remote-sessions.md - Correct claims: .NET package name, Python install, Java version placeholder + JDK 21+, Go ctx.Context signatures, Node TS 5.2+/Node 20+, Rust permission handler API - Document skipPermission, per-session gitHubToken, BYOK wireApi, assistant.usage.apiEndpoint, fleet-mode compatibility - Mark java ADR-001 superseded by GA Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This comment has been minimized.
This comment has been minimized.
…iguation intro Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Documentation refresh to align the repo with general availability messaging and to add new guides for cloud sessions, fleet mode, and multi-tenant/server deployments across the multi-language Copilot SDK.
Changes:
- Removed “public/technical preview” wording across root + SDK READMEs and updated GA/semver phrasing.
- Added new feature/setup guides: multi-tenancy/server mode, cloud sessions, and fleet mode (plus cross-links from existing docs).
- Corrected several language-specific documentation claims (installation commands, package names, API option names, and examples).
Show a summary per file
| File | Description |
|---|---|
README.md |
Updates top-level positioning, CLI bundling notes, and production-readiness wording. |
CONTRIBUTING.md |
Updates language list to include Java. |
rust/README.md |
Removes preview note and adds Java to parity references. |
rust/Cargo.toml |
Removes technical-preview wording from crate description. |
python/README.md |
Updates install instructions/extras and documents additional client options. |
nodejs/README.md |
Updates requirements and option/method documentation (incl. lifecycle subscription naming). |
nodejs/docs/examples.md |
Updates hooks/events examples and clarifies permission-deny reasoning. |
go/README.md |
Updates client method signatures in docs to include context.Context. |
dotnet/README.md |
Fixes NuGet package name in installation instructions. |
java/README.md |
Updates requirements guidance and version placeholder usage. |
java/docs/adr/adr-001-semver-pre-general-availability.md |
Marks prior pre-GA SemVer ADR as superseded. |
docs/index.md |
Adds new guides (multi-tenancy, cloud sessions, fleet mode) to the main docs index. |
docs/getting-started.md |
Updates getting-started prerequisites and Rust permission-handler API usage in examples. |
docs/setup/index.md |
Adds multi-tenancy guide to setup navigation. |
docs/setup/choosing-a-setup-path.md |
Adds multi-tenancy as a recommended path for server/production setups. |
docs/setup/backend-services.md |
Expands backend guidance with multi-user “empty mode” patterns and per-session auth. |
docs/setup/scaling.md |
Links to the new multi-tenancy SDK-options guide. |
docs/setup/multi-tenancy.md |
New guide covering mode: "empty", per-session auth, sessionFs, isolation patterns, and integration IDs. |
docs/features/index.md |
Adds fleet/cloud sessions to the feature guide index and refines remote-session wording. |
docs/features/custom-agents.md |
Cross-links fleet mode for parallel sub-agent dispatch. |
docs/features/remote-sessions.md |
Clarifies remote vs cloud sessions and removes embedded cloud-session content. |
docs/features/cloud-sessions.md |
New guide documenting cloud session creation and repository association. |
docs/features/fleet-mode.md |
New guide documenting fleet orchestration and SDK surfaces across languages. |
docs/features/streaming-events.md |
Extends assistant.usage docs with apiEndpoint for cost/observability attribution. |
docs/hooks/pre-tool-use.md |
Documents skipPermission for trusted custom tools. |
docs/auth/index.md |
Adds a concise authentication-priority summary and links to multi-user guidance. |
docs/auth/authenticate.md |
Clarifies that explicit tokens can be client-level or per-session and links multi-user guidance. |
docs/auth/byok.md |
Expands wireApi explanation and clarifies provider endpoint semantics. |
docs/observability/index.md |
Adds assistant.usage.apiEndpoint observability/cost-attribution guidance. |
docs/observability/opentelemetry.md |
Adds assistant.usage.apiEndpoint note alongside trace context guidance. |
docs/troubleshooting/compatibility.md |
Adds fleet-mode link and a dedicated workaround section for fleet mode. |
docs/troubleshooting/mcp-debugging.md |
Adjusts debugging wrapper log path. |
Copilot's findings
- Files reviewed: 32/32 changed files
- Comments generated: 10
| <summary><strong>Rust</strong></summary> | ||
|
|
||
| ```rust | ||
| use github_copilot::generated::api_types::FleetStartRequest; |
Replace all 9 docs-validate: skip markers in cloud-sessions.md with the hidden-full-snippet + visible-snippet pattern (or direct buildable snippets), and fix latent validation failures in fleet-mode.md and multi-tenancy.md (.NET undefined locals, Go missing package/imports, TS plan-mode union literal). - cloud-sessions.md: 0 skip markers remain - fleet-mode.md: hidden Go/.NET wrappers for session+ctx; plan-mode snippet now a valid type union - multi-tenancy.md: hidden Go/.NET wrappers seed runtimeInstanceId, runtimeUrl, user, requestId Validation (TS / Python / Go / C#) passes for all three files; Java validation requires mvn (only available in CI). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
New guide covering the --plugin-dir / extra-args path for loading bundled plugin folders (skills, hooks, MCP, custom agents, LSP) from an SDK host application. Covers folder layout, per-language wiring, plugin-dir vs marketplace plugins, COPILOT_PLUGIN_DIR_ONLY for deterministic plugin sets, session.plugins.list inspection, and troubleshooting. Links added from docs/index.md and docs/features/index.md. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Verified all 10 reviewer findings against source; all accurate. Applied fixes: - backend-services.md: Replace 5 instances of the non-existent TS top-level 'cliUrl' option with 'connection: RuntimeConnection.forUri(...)' (matches CopilotClientOptions in nodejs/src/types.ts). - multi-tenancy.md: Drop baseDirectory/sessionIdleTimeoutSeconds from the TS forUri sample and setCopilotHome/setSessionIdleTimeoutSeconds from the Java setCliUrl sample (both ignored for URI connections; documented inline). Fix SessionFsConfig field 'initialWorkingDirectory' -> 'initialCwd' (matches nodejs/src/types.ts:2068). Remove 'or cliUrl' from the TS row of the external-runtime table. - streaming-events.md: Add 'ws:/responses' to assistant.usage.apiEndpoint union (matches nodejs/src/generated/session-events.ts:231). - fleet-mode.md: Fix Rust crate path 'github_copilot' -> 'github_copilot_sdk' (rust/Cargo.toml lib name). - cloud-sessions.md: Replace invalid Rust async closure permission handler with Arc<dyn PermissionHandler> via ApproveAllHandler from handler module (matches rust/src/types.rs:1529 signature). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ast skip) CI Validate-* jobs run with mvn installed (so real Java errors surfaced) and mypy strict (so undefined module-level names surfaced): - features/fleet-mode.md Python sub-agent events: wrap visible snippet with hidden async main() that constructs session via CopilotClient. - setup/multi-tenancy.md Java: add hidden compilable wrapper that defines runtimeUrl/user/requestId stubs and switches wildcard import to fully-qualified com.github.copilot.rpc imports. - features/plugin-directories.md Java: fix wrong import (com.github.copilot.CopilotClientOptions -> com.github.copilot.rpc.CopilotClientOptions) and wrap in hidden compilable class. - features/plugin-directories.md Rust: remove last docs-validate: skip; wrap with hidden tokio::main and keep visible excerpt. All non-Java validators now clean locally; only env-only mvn errors remain. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This comment has been minimized.
This comment has been minimized.
…eshooting
Cover two real-world gotchas that the existing guide does not mention:
1. "Sending the first prompt" — explains that createSession returns
before the remote worker connects, so the first session.send must
await session.start{producer:'copilot-agent'}. Without it the runtime
silently swallows the prompt (RemoteSession.sendForSchema is
fire-and-forget) and the developer sees a resolved messageId but no
assistant.* events and no prompt in Mission Control. Also notes that
streaming:true is needed for assistant.message_delta.
2. "Accessing the Mission Control URL" — cloud sessions auto-publish a
shareable URL via session.info{infoType:'remote', url}. Apps should
subscribe to that event rather than calling remote.enable(), which is
only for promoting local sessions.
Add three matching rows to the Troubleshooting table and a Streaming
Events link in See Also.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Cross-SDK Consistency Review ✅This PR modifies only documentation files ( No cross-SDK consistency issues to report. The documentation changes appear to improve accuracy across all language SDKs (e.g., correcting package names, method signatures, and API option names to match actual source code).
|
There was a problem hiding this comment.
FWIW @patniko on the cloud side we were able to decouple the --cloud policy from --remote. This means that a user can only enable cloud sandbox for this to work. At the end of the day, --remote is just the underlying tech to make --cloud work.
Cloud sandbox policy is at org/enterprise level at Settings > Sandboxes > Let organizations decide
cc @JasonEtco
Summary
Refreshes documentation for general availability and adds four new guides covering capabilities that were undocumented or under-documented.
GA wording
rust/Cargo.toml, and Java ADR-001 (marked superseded).copilot-agent-runtimeconventions: lowercase "generally available", no "GA" abbreviation, no banners.grep -riE 'public preview|technical preview|in preview'across the repo returns zero matches.New guides
docs/setup/multi-tenancy.md—mode: "empty", integration IDs,sessionFs, per-sessiongitHubToken, isolation patternsdocs/features/cloud-sessions.md—cloud:option, Mission Control hosted sessions, repo association, resume behaviordocs/features/fleet-mode.md— parallel sub-agent dispatch (Node/Python/Go/.NET/Rust; Java binding not yet found)docs/features/plugin-directories.md— loading bundled plugins (skills/hooks/MCP/agents/LSP) via--plugin-dir,COPILOT_PLUGIN_DIR_ONLY,session.plugins.list()inspection, and plugin-dir vs marketplace tradeoffsClaim corrections
GitHub.Copilot→GitHub.Copilot.SDKpip install github-copilot-sdk(+ telemetry extra)1.0.0-beta-java.4→${copilot.sdk.version}placeholder; JDK 25 → JDK 21+ (for virtual threads)ctx context.ContexttoCreateSession/ResumeSession*/ListSessions/DeleteSession/PingTypeScript 5.2+ / Node.js 20+; documentedRuntimeConnection.forUri()(nocliUrlshortcut onCopilotClientOptions)with_handler→with_permission_handler; removed nonexistentToolHandlerRouter; added Java to cross-referencesskipPermission, per-sessiongitHubToken, BYOKwireApi,assistant.usage.apiEndpoint(/chat/completions,/v1/messages,/responses,ws:/responses), expanded fleet-mode compatibility noteValidation
hidden/visible-snippet pattern instead ofdocs-validate: skip; zero skip markers remain in the new files.npx tsx extract.ts && npx tsx validate.tspasses for TypeScript, Python, Go, and .NET on all touched files. Remaining Java validation failures are environment-only (mvn not found).Code-reviewer feedback (commit
3b464ac0)All 10 line comments from the Copilot PR reviewer were verified against source and addressed:
backend-services.md× 5: TScliUrl→connection: RuntimeConnection.forUri(...)(matchesnodejs/src/types.ts)multi-tenancy.md: removed options ignored on URI connections (TS + Java);initialWorkingDirectory→initialCwd(matchesSessionFsConfig); dropped phantomcliUrlfrom TS tablestreaming-events.md: added"ws:/responses"toapiEndpointunion (matches generated session-event types)fleet-mode.md: Rust crategithub_copilot→github_copilot_sdk(matchesrust/Cargo.toml)cloud-sessions.md: Rust permission handler now usesArc<dyn PermissionHandler>viahandler::ApproveAllHandler(matcheswith_permission_handlersignature inrust/src/types.rs)Diff
33 files changed, 1,578 insertions(+), 195 deletions(-)
Open follow-ups (not blocking this PR)
subagentStart/subagentStopruntime hooks (runtime 1.0.52) have no public SDK bindings yet — fleet-mode.md documents only the genericsubagent.*events.sessionFsnot yet exposed publicly; multi-tenancy.md notes this.--prerelease(upstream constraint).GITHUB_COPILOT_INTEGRATION_IDenv var, not a first-class SDK option — documented as such.