Copilot changelog tracker
Every GitHub Copilot App, CLI, and SDK release from the last 14 days, with its key changes and full changelog.
Highlights. Changed. Fixed.
gh release view v1.1.20 --repo github/app
/agent autocomplete in the prompt composer showing identical entries for plugin agents that share the same name; it now labels them with their owning plugin so you can tell them apart.# and @ mention menus showing "no results" when a lookup actually failed. They now show a clear error message with a Retry button instead.Added. Improved. Fixed.
copilot <TAB> offers root flags alongside subcommands and each subcommand offers only its own optionscopilot login --host now works, and --max-autopilot-continues no longer accepts scientific notationgh release view v1.0.84-5 --repo github/copilot-cli
copilot <TAB> offers root flags alongside subcommands and each subcommand offers only its own optionscopilot login --host now works, and --max-autopilot-continues no longer accepts scientific notationFixed.
gh release view v1.1.19 --repo github/app
Highlights. Added. Changed.
gh release view v1.1.18 --repo github/app
Added. Fixed. Removed.
copilot instruction list and copilot lsp list, replacing copilot plugins list --kind instruction and --kind lsp--json to copilot plugin list, copilot plugin marketplace list and copilot plugin marketplace browseenable and disable to copilot plugin, copilot mcp and copilot skill, replacing copilot plugins enable/disable --plugin|--mcp|--skillcopilot plugins install --skill [--scope project] with copilot skill add [--project]; the --scope spelling is gonegh release view v1.0.84-4 --repo github/copilot-cli
copilot instruction list and copilot lsp list, replacing copilot plugins list --kind instruction and --kind lsp--json to copilot plugin list, copilot plugin marketplace list and copilot plugin marketplace browseenable and disable to copilot plugin, copilot mcp and copilot skill, replacing copilot plugins enable/disable --plugin|--mcp|--skillcopilot plugins install --skill [--scope project] with copilot skill add [--project]; the --scope spelling is gone--kind, --scope, --mcp and --skill flags from copilot plugins; use copilot mcp and copilot skillcopilot plugins list --json now emits a flat array of plugins instead of the cross-kind { plugins, errors } object; scripts reading .plugins must be updatedcopilot plugins list is now an alias of copilot plugin list and reports only plugins, no longer MCP servers, skills, instructions or LSP serversHighlights. Added. Changed.
gh release view v1.1.17 --repo github/app
github open <directory> command now switches to your most recently active session for that project or worktree instead of always opening a new one. Use github open --new <directory> to open a fresh session.az repos pr create) to open pull requests for non-GitHub repositories when explicitly asked to.Fixed.
gh release view v1.0.84-3 --repo github/copilot-cli
Highlights. Added. Changed.
gh release view v1.1.16 --repo github/app
/settings slash command to open app settings directly from the message composer.New. Improved. Fixed.
/vim or by setting editorMode to vim for modal editing in the composer, with the current mode shown while you type.--resumectrl+h no longer deletes a whole word in tmux, screen, and remote sessions that carry a Windows Terminal WT_SESSION from elsewhere. As an accepted tradeoff, ctrl+backspace now deletes a single character in those sessions — including a genuinely local Windows tmux or screen pane — where ctrl+w still deletes a wordgh release view v1.0.84-2 --repo github/copilot-cli
/vim or by setting editorMode to vim for modal editing in the composer, with the current mode shown while you type.--resumectrl+h no longer deletes a whole word in tmux, screen, and remote sessions that carry a Windows Terminal WT_SESSION from elsewhere. As an accepted tradeoff, ctrl+backspace now deletes a single character in those sessions — including a genuinely local Windows tmux or screen pane — where ctrl+w still deletes a wordallowManagedHooksOnly policy now also blocks extension-registered preToolUse, postToolUse and postToolUseFailure callbacks, which previously bypassed the managed-only lockdown that every other hook event already appliedAdded.
gh release view v1.0.84-1 --repo github/copilot-cli
Highlights. Added. Changed.
/goal command to set a persistent objective for autopilot to work towards in local sessions.gh release view v1.1.15 --repo github/app
/goal command to set a persistent objective for autopilot to work towards in local sessions./goal command to set a persistent objective for autopilot to work towards in local sessions.az login session instead of an API key.session/new link with an issue parameter to create an issue-linked session directly.project/branch) for easier context when working across repositories.& session mention option from the prompt composer on cloud sessions, since those references couldn't be resolved there./fleet in front of a prompt in a new, unsent chat no longer refuses the message with a remote-host error — it starts the chat as a Fleet, matching Home and workspace drafts.Features. Other changes.
clientInfo in Node.js, client_info in Python and Rust, ClientInfo in Go and .NET, setClientInfo in Java).ask_user session behavior — Session create and cold resume now accept a language-specific askUserVariant option with legacy and elicitation values.gh release view v1.0.13 --repo github/copilot-sdk
AIFunction, Node.js exposes ToolInvocation.signal, Go cancels ToolInvocation.TraceContext, Java cancels the returned CompletableFuture, Python cancels the handler task, and Rust drops the handler future. Go handlers that retain TraceContext for background work must derive a separate lifetime because the invocation context is cancelled when the request ends.clientInfo in Node.js, client_info in Python and Rust, ClientInfo in Go and .NET, setClientInfo in Java). When set, the SDK forwards it on the server.connect handshake so the telemetry the runtime emits on the connection is attributed to the application and its Copilot integration instead of the runtime's own build. All fields are optional, and leaving client info unset keeps the runtime's default attribution. See Client info.session.factory.listRuns() calls still return the runs array, while calls with afterSeq, beforeSeq, or limit return the full page with cursor and truncation metadata. Factory run and resume options now accept notifyOnComplete and logPhaseNames. The SDK forwards these options to the Copilot CLI for new and resumed runs.ask_user session behavior — Session create and cold resume now accept a language-specific askUserVariant option with legacy and elicitation values. SDK sessions retain the legacy question-and-answer tool by default. Select elicitation and provide an elicitation handler to expose the structured form-based ask_user tool.initial and refresh requests to the owning session, and removes registrations on rollback, replacement, session close, and client close. Static per-session gitHubToken credentials remain supported and are mutually exclusive with the callback. Token responses use the shared tagged token/cancelled shape and require expiresIn, expressed as the positive number of seconds remaining when the callback completes. See github/copilot-agent-runtime#16381 for the runtime credential-authority implementation. Initial acquisition occurs during create or resume; cancellation, callback errors, and invalid credentials reject that operation instead of falling back to ambient authentication. Idle sessions refresh only before their next credential-consuming operation.joinSession() accepts a requestedEnvironmentVariables option listing the variable names the extension needs. The CLI shows a permission prompt naming the extension and the exact variables requested. On approval, only those variables reach that extension and their values are written into the extension process's process.env before joinSession() resolves. On denial, joinSession() rejects, the extension does not load, and its tools never reach the model. An approval is remembered against the exact set of names the user saw, so an extension that later asks for one more variable prompts again. Names that are unset, or that the CLI does not filter from extensions, are not prompted for. This is the client half of the feature; it requires a Copilot CLI that supports extension environment access, and older CLIs ignore the request and grant nothing.Client::prepare_session and Client::prepare_resume_session return an inert PreparedSession that owns the session's event channel, so a subscription can be installed *before* any protocol activity begins: Previously, Session::subscribe could only be called on the returned session, so events the runtime emitted while session.create / session.resume was still in flight were broadcast with no receiver installed and dropped. Ephemeral events such as session.idle are not persisted, so they could not be recovered with getMessages either. The guarantee is scoped to *routed* events. For cloud sessions where the server assigns the session ID, the SDK cannot route notifications until the session.create response arrives and the ID is known, so events emitted before that point are not routable to any session. Pin session_id on the config to get router registration before the RPC, and with it complete pre-response coverage. prepare_* is synchronous and inert: it validates the buffer capacity and allocates a local channel, and performs no router registration, task spawn, or wire activity until start() is first polled. start(self) consumes the handle and PreparedSession is not Clone, so a prepared session can never produce two event loops. Dropping an unstarted handle leaves no state behind; dropping a polled start() future cancels the startup and unregisters the session, so a retry with the same session ID succeeds. Session registrations now carry an ownership identity, so cleanup removes only the exact registration it owns and an abandoned startup can never evict a same-ID retry (or a session that replaced it). Both SessionConfig and ResumeSessionConfig gained a runtime-only event_buffer_capacity option (default 512, Some(0) rejected as an invalid config). The buffer is finite, so slow subscribers observe Lagged rather than applying backpressure; consumers that need a lossless view of a large startup burst must size the buffer accordingly or drain concurrently with start(). create_session and resume_session are unchanged wrappers over prepare_*(...)?.start() with identical RPC sequences and error kinds.managedSettings option that injects an enterprise permissions policy at session startup, alongside the existing enableManagedSettings self-fetch flag. The current contract is permissions-only: disableBypassPermissionsMode (the literal "disable"), plus deny, ask, and allow rule lists. The layer composes restrictively with any server- or device-level managed settings (deny/ask are unioned, every present allow list must admit a tool, and disableBypassPermissionsMode is deny-wins). This layer is startup-only and is not persisted with the session, so it must be re-supplied on resume to remain in effect; omitting it on resume clears the previously injected layer. It can be combined with enableManagedSettings. Host injection requires Copilot CLI 1.0.79-5 or later and does not require an SDK protocol version bump. The generated session-event types also expose truthful injected-policy provenance: session.managed_settings_resolved can report source as client or mixed, with optional clientManaged metadata.auto model routing toward efficiency, balance, or intelligence. An Auto tier can be set at session creation, and a new setAutoTier (and equivalent setModel option) lets sessions stage or reset a tier preference afterward, since the runtime only commits a staged preference on the next successful auto model turn. (#2437, #2514)allowBypass across all six SDKs. External tool overrides such as apply_patch can also receive non-object JSON argument values, which previously failed before reaching the host handler in .NET. (#2372, #2496)featureFlags map across all six SDKs, forwarding host-resolved overrides while preserving the distinction between an unset map and an explicitly empty one. (#2451)session.detach instead of session.destroy for SDK session cleanup so disconnecting one client no longer tears down a shared session for other owners (#2307)ClientMode::Empty to no built-in skills (#2410)Added. Fixed.
/rubber-duck command is hidden after a model refresh removes its compatible criticgh release view v1.0.84-0 --repo github/copilot-cli
/rubber-duck command is hidden after a model refresh removes its compatible criticChanges.
model, tried in order until one is available to you, and model-policy: required keeps model changes on that listgh release view v1.0.83 --repo github/copilot-cli
model, tried in order until one is available to you, and model-policy: required keeps model changes on that list/copy and notifications work in herdr panesConnection: closegh commands now authenticate as the account configured for the repository instead of the Copilot CLI login--add-dir or --plugin-dir path now resolves against the session's working directory under --resume=<id> and --worktree, instead of the directory the CLI was launched from. Relative values are also resolved after -C is applied, so -C no longer has to precede either option on the command line/mcp config and the MCP add/edit/authenticate forms now open in the plugins dashboard instead of a separate MCP manager, so closing a form returns to the server list.Added. Improved. Fixed.
gh release view v1.0.83-5 --repo github/copilot-cli
Connection: closegh commands now authenticate as the account configured for the repository instead of the Copilot CLI loginAdded. Improved. Fixed.
gh release view v1.0.83-4 --repo github/copilot-cli
Changes.
gh release view v1.0.83-3 --repo github/copilot-cli
Added. Improved.
model, tried in order until one is available to you, and model-policy: required keeps model changes on that listgh release view v1.0.83-2 --repo github/copilot-cli
model, tried in order until one is available to you, and model-policy: required keeps model changes on that listAdded. Improved. Fixed.
/mcp config and the MCP add/edit/authenticate forms now open in the plugins dashboard instead of a separate MCP manager, so closing a form returns to the server list.gh release view v1.0.83-1 --repo github/copilot-cli
/mcp config and the MCP add/edit/authenticate forms now open in the plugins dashboard instead of a separate MCP manager, so closing a form returns to the server list.--add-dir or --plugin-dir path now resolves against the session's working directory under --resume=<id> and --worktree, instead of the directory the CLI was launched from. Relative values are also resolved after -C is applied, so -C no longer has to precede either option on the command lineFeatures. Other changes.
copilot-runtime executable when managing their own subprocess connection, pairing the wrapper with the correct runtime.node addon for a leaner and more reliable process lifecycle. (#2395)gh release view v1.0.13-preview.4 --repo github/copilot-sdk
rewind to roll back. (#2321)copilot-runtime executable when managing their own subprocess connection, pairing the wrapper with the correct runtime.node addon for a leaner and more reliable process lifecycle. (#2395)--plugin-dir loading, these are registered via plugins.builtin.set and trusted by the host. (#2330)decisionContext when replying to a permission request, letting the runtime attribute decisions to a person, host policy, or automated recommendation. Additive for all SDKs except Rust. (#2294) > Rust breaking change: PermissionResult::Decision changed from a tuple variant to a struct variant ({ decision, context }). Code using result helpers (approve_once() etc.) is unaffected; direct construction or pattern-matching on Decision requires migration.joinSession() now accepts an env option listing the sensitive environment variable names the extension needs. The CLI prompts the user; on approval the values are written into process.env before joinSession resolves. (#2348)ClientMode::Empty now excludes built-in skills by default — When a session is created in empty mode, includedBuiltinSkills defaults to [] across all SDKs. Pass an explicit allowlist to opt individual built-in skills back in. (#2410)askUserVariant option on session create and resume for structured ask-user tool behavior. Omitting it preserves legacy behavior. (#2432)Features. Other changes.
gitHubToken.decisionContext so the runtime can attribute whether a decision came from a person, a host policy, or an automated recommendation.gh release view v1.0.13-preview.3 --repo github/copilot-sdk
enableFileChangeTracking is enabled, the session records which files were changed during a conversation turn. You can then list pending rewind points, preview changes, and rewind the conversation history together with any tracked file modifications. (#2321)gitHubToken. The SDK maps each host request (with host, session, and reason context) to your callback, handling concurrent-session isolation automatically. (#2412)--plugin-dir loading. (#2330)decisionContext so the runtime can attribute whether a decision came from a person, a host policy, or an automated recommendation. This is additive for TypeScript, C#, Go, Python, and Java. Rust clients that construct PermissionResult::Decision directly must migrate from the tuple variant to the new struct variant. (#2294)ClientMode::Empty now defaults to no built-in skills — When creating a session with ClientMode::Empty, built-in skills are now disabled by default. To opt specific skills in, supply an explicit includedBuiltinSkills allowlist. Custom skills via enableSkills and skillDirectories are unaffected. (#2410)JsonValue, ctx.agent() forwards agent/reasoningEffort/contextTier (#2309)argsSchema so the CLI validates caller arguments before starting a run (#2315)askUserVariant session option for structured ask-user tool selection (#2432)Added. Improved. Fixed.
/copy and notifications work in herdr panesgh release view v1.0.83-0 --repo github/copilot-cli
/copy and notifications work in herdr panesNo releases match your filters.