Skip to content

Releases

1.0.110-1

1.0.110-1 Pre-release
Pre-release

Choose a tag to compare

Fixed

  • A session reopened with copilot --resume is marked in use as soon as it opens, so copilot -p --resume and a second window no longer write into it while it sits idle
  • Custom status lines preserve the first row's indentation so all rows align consistently
  • Show control characters visibly in /settings list items instead of applying terminal styling or hyperlinks
  • Markdown tables containing the wavy dash and similar wide symbols render with correctly aligned rows
  • Show the sign-in prompt after /logout removes the last saved account with invalid credentials, without requiring a restart
  • Wrapped text uses the full width of each row without inserting extra blank lines inside paragraphs
  • copilot mcp add preserves existing invalid server entries and asks you to remove them before reusing their names
  • Preserve plugin preferences and settings files at startup when settings.json contains invalid values or cannot be parsed
  • Shell and Search results show accurate line and file counts and omit model-only cost guidance when an AI-credit limit is set
  • Vim mode's j/k motions use the current cursor column after gg, ge, operators, or redo
  • Display custom agent names and models as plain text in /subagents, keeping table columns aligned and preventing embedded terminal formatting or links
  • A local MCP server whose reply contains a lone UTF-16 surrogate escape (such as a tool description cut inside an emoji) no longer fails after 60 seconds or hangs a tool call for 3 minutes; the reply is read with a replacement character
  • Plugin toggles now honor repository-controlled live plugin settings and consistently use the same marketplace source across listing and activation.

1.0.110-0

1.0.110-0 Pre-release
Pre-release

Choose a tag to compare

Added

  • Experimental: answer git, ssh, and sudo password prompts from agent commands in a masked dialog (enable with /experimental on)

Improved

  • Selecting an unavailable account in /user switch shows recovery guidance and a retry action
  • Click anywhere in expanded reasoning to collapse it without scrolling back to the header
  • Offer a session AI-credit limit top-up at 90% usage, before the agent loses access to tools

Fixed

  • Show failed and cancelled compaction outcomes in the timeline, and explain memory-pressure compactions with restart and resume guidance.
  • /diff on a feature branch now lists committed files whose names have accented or other non-ASCII characters, a double quote, a backslash or a tab, instead of leaving them out of the file list.
  • copilot help network now quotes the certificate error Copilot reports for an untrusted proxy CA on Linux ("certificate verify failed", "unable to get local issuer certificate"), not a message it no longer produces
  • copilot help permissions no longer gives shell(gh pr create) as a rule example, which never matches; it now uses shell(gh pr) and explains that only the first subcommand is part of a command's name.
  • /mcp reload no longer says the servers were restarted when the MCP configuration could not be loaded
  • MCP tool results that also carry a top-level key such as skills, skill, tools or messages now reach the model instead of failing the tool call
  • /every and /after keep the line breaks and indentation of a multi-line prompt when a natural-language time is parsed from it, instead of merging lines and collapsing repeated spaces.
  • "Thought for" durations update when each reasoning part ends and no longer include time spent streaming the answer
  • Show forked sessions by name in the exit summary so their resume commands are easier to identify
  • /share file and /share html reject directory paths instead of creating hidden or misplaced export files
  • Allow copilot config to read and update settings.json files containing only comments
  • Shortened paths preserve folder names containing backslashes on Linux and macOS
  • copilot -p honors trusted repositories' includeCoAuthoredBy setting for commit trailers
  • Startup auto-install now waits for managed settings before reporting missing plugin marketplaces
  • Interactive prompts appear correctly after extensions switch a session out of autopilot.
  • /move preserves edits to files marked assume-unchanged and reports submodule changes left in the original working tree
  • Changing a setting in /statusline preserves other footer settings updated by another session while the picker is open
  • Avoid unnecessary path access prompts for in-repository reads after shell commands that change directories
  • Keep permanently approved URLs approved after /new or /clear without restarting the CLI
  • JSON prompt mode emits a final result record when authentication fails or the prompt is blank
  • Reject prompt options combined with subcommands instead of silently dropping the prompt and running the subcommand
  • Pressing Enter after completing an empty directory path runs /add-dir or /cd reliably on Windows
  • Use the exact directory name typed in /cd, /cwd, and /add-dir instead of a similarly named sibling directory
  • Show control characters visibly in folder trust dialogs so folder names display without hidden formatting or extra lines
  • Show when files or directories are too large to read or list instead of reporting misleading counts in collapsed tool results
  • Warn when repository settings override a saved default model for new sessions, naming the model and settings file that still apply
  • Treat empty or fully commented repository settings files as empty settings without startup warnings or parsing errors
  • Keep the command description and exit status visible in collapsed failed shell rows with multi-line output
  • Show pasted terminal text plainly in Ctrl+R search and session confirmations so escape sequences cannot recolor or hide text
  • Sandbox settings show their effective defaults and toggle default-on options off on the first press
  • Show settings-file errors without duplicate, misleading policy-update warnings when settings.json is invalid
  • Hook changes saved from /settings apply to the next prompt without restarting the CLI
  • IDE auto-connect follows your current folder after /cd, keeping editor selections and diffs in the correct IDE
  • Expanded Shell output preserves text before and after diffs and shows file names for diff-only output
  • Keep copilot lsp list output free of warnings when plugin language servers load successfully
  • Deleting the active voice model now shows that voice mode is off and how to choose another model.
  • Show the output size instead of an incorrect match count when search results are too large to list
  • MCP server and skill enable/disable commands correctly report success for names supplied through --additional-mcp-config or --plugin-dir
  • Keep dialog borders and padding aligned when a line ends with an invisible zero-width character
  • List items in plan and task summaries stay on one line when they contain literal asterisks or sentences ending in numbers
  • Show the enabled state enforced by your organization's managed settings for built-in plugins in copilot plugin list and --json output
  • Apply changes to Disable bypass permissions mode in /settings immediately, without restarting the CLI
  • /cd, /cwd, and /add-dir select the exact directory name you type when siblings differ only by case or accents
  • Hide custom agents with built-in names from /subagents so their controls cannot change built-in agent settings
  • Preserve first-line indentation in shell command output so expanded Shell rows correctly show spacing-sensitive results such as git status --short
  • Shell commands terminated by a signal report the correct exit status, such as 137 for SIGKILL or 139 for a segmentation fault
  • Show a confirmation when a model switch queued while the agent is working takes effect
  • Show the output size instead of an incorrect line count in Shell summaries when command output is too large to display
  • Footer context usage shows the same pre-request percentage as /context.
  • Plan quota and Copilot usage stay visible in the status line, /usage and the exit summary while a GitHub-hosted model is selected, even when providers.json configures a custom provider; they are hidden only while a model from that provider is selected
  • Prompt history is no longer hidden, and then erased by the next prompt, when the file that stores session mentions for past prompts is damaged or was written by a newer version
  • The ctrl+y footer hint no longer misses a plan written right after the session starts, and it keeps updating when the plan file cannot be watched
  • Hook events and other JSON settings can be saved from their editor in /settings; unset hook events now open as an empty list
  • Resuming a session by name with --resume no longer sends the session name in telemetry; only a session ID is reported
  • Exiting no longer writes dozens of errors to the process log about cleaning up a session that has already shut down
  • /sandbox no longer replaces your saved sandbox settings with defaults when settings.json has an invalid value; it shows the load error instead, and a sandbox path saved from a permission prompt is refused rather than overwriting the sandbox block
  • A prompt submitted while Compact and switch is compacting shows as queued again, instead of disappearing until the compaction finishes
  • Disabling an MCP server updates its token count in /mcp without waiting for another model response
  • On Linux, language servers that watch files are no longer told that files still on disk were deleted after two files or directories are swapped through a temporary name
  • copilot -p in a trusted folder no longer sometimes runs without the repository's hooks when plugins finish loading at the same time
  • copilot mcp remove and /mcp remove now delete an mcp-config.json entry that is skipped as invalid instead of reporting that the server was not found
  • Resuming a session by ID or name with /resume now keeps the session you leave open in the background, so it still runs its sessionEnd hooks, records its shutdown and is listed when you exit
  • copilot -p and other CLI runs that exit within a minute now apply process-log retention, so old logs are removed after 7 days and beyond the newest 50 instead of piling up one per run
  • copilot plugin marketplace add ./name, ../name and ~/name now add the local marketplace directory instead of trying to clone a GitHub repository
  • A shell command killed because the sandbox settings changed while it ran is now reported as failed instead of as a successful command with no output
  • The warning for an unsupported --reasoning-effort value is no longer lost when the session's model changes while the CLI is starting
  • copilot help '' prints the general help and exits successfully, just like copilot help.
  • A /compact with nothing to compact no longer leaves a stale "Compacting conversation history..." row in the timeline
  • An mcp-config.json that cannot be read or is not a JSON object now fails with an error that names the file and the actual problem, and a syntax error in a file with comments or trailing commas points at the real mistake instead of the first comment or comma

Removed

  • Remove legacy remote steering; cloud sessions and remote connections now require an AHP environment

1.0.109

Choose a tag to compare

@copilot-cli-release-app copilot-cli-release-app released this 10 Nov 17:02

2026-11-10

  • Add IPv4/IPv6 CIDR support for sandbox host allow and deny rules in settings.
  • Add support for Claude Fable 5.2 in the model picker under New models
  • copilot help input now says that Backspace at the start of shell input leaves shell mode and keeps the typed text, not only on an empty prompt
  • /subagents keeps its Overridden and Status columns readable on narrow terminals and aligns agent names with wide characters
  • Removing a built-in MCP server with copilot mcp remove or /mcp delete explains how to disable it instead
  • Selecting a directory next to your home directory in /cd ~ or /add-dir ~ uses the correct full path
  • Trusted-folder and worktree confirmations keep Windows path separators
  • Hide empty assistant reply bullets when a response contains only whitespace
  • Choosing "don't ask again" for parallel file operations approves all covered requests without prompting again
  • Make /terminal-setup configure Shift+Enter in the correct location for VS Code, Cursor, and Windsurf on Linux when XDG_CONFIG_HOME is set
  • The footer's AI credits now update as soon as /compact finishes instead of after the next turn
  • Prompt mode with --output-format json emits a final result record with an exit status even when a run fails early
  • Rate-limit errors now name the same mode as the switch dialog (Copilot Fusion mode or auto mode) instead of "auto model"
  • In a multi-line prompt, Up and Down now start from the cursor after Left, Right, Backspace, Delete or a similar key that had nothing to act on at the start or end of the text, instead of jumping to the column of the previous Up/Down run
  • Number keys keep working in shell and URL approval dialogs after pressing the number of the "No, and tell Copilot" option and moving back up
  • /cd . and /add-dir . now keep the current directory in a git repository instead of selecting .git; the directory picker lists ./ first and still offers hidden directories below it
  • In ACP mode, a preToolUse hook that answers ask now asks the ACP client to allow or deny the tool call instead of denying it as host policy
  • /voice immediately reports an overly long socket path and how to fix it, instead of waiting before showing a generic error.
  • File move permission prompts show both source and destination paths, and pure renames no longer show an empty diff.
  • Session history keeps every turn when a second window works on a session another window still has open
  • The beepOnSchedule setting description now says it controls the beep when a scheduled /every or /after turn finishes, and only while beep is on, instead of a beep when the prompt fires
  • The companyAnnouncements setting description now says one message, picked at random, appears in the timeline as a Company announcement notice, not in the startup banner
  • copilot help config no longer says turning off compactPaste shows every paste in full; pastes over 20 KB are still saved to a workspace file
  • copilot help config now names the home screen tabs as they appear, Current and Sessions, instead of Session and Agents
  • The ctrl+h entry in the keyboard shortcut help now says it deletes the previous word in local Windows terminals, where the terminal sends the same key for ctrl+h and ctrl+backspace
  • The footer.showModelEffort setting description now says it toggles only the reasoning effort label next to the model name, which always shows, and that the effort shows briefly after it changes when the setting is unset
  • copilot help config no longer names staff-only and internal settings, such as taskbarPresence, showTipsOnStartup and streamerMode
  • The ide.openDiffOnEdit setting description now says the IDE diff opens for a file edit waiting for your approval, and that accepting or rejecting it answers that prompt, instead of a diff on every edit
  • Text typed after /init now reaches the model as extra guidance for the generated instructions file and appears in the timeline, instead of being silently dropped.
  • The /init usage hint now shows [suppress|<instructions>], since text after /init guides what it writes, instead of listing only suppress
  • The inlineImages setting description no longer says images render with Sixel graphics by default; Sixel is used only with experimental features on
  • MCP tool results that return text as a base64 blob resource with a text MIME type, such as text/plain or application/json, now reach the model instead of arriving as an empty result
  • copilot help providers-env and copilot help environment no longer say COPILOT_PROVIDER_BEARER_TOKEN always takes precedence over COPILOT_PROVIDER_API_KEY: it does for openai and azure, but anthropic sends both
  • copilot help providers-env and copilot help environment now say COPILOT_PROVIDER_MODEL_ID and COPILOT_PROVIDER_WIRE_MODEL default to the --model value before COPILOT_MODEL, and that the wire model falls back to COPILOT_PROVIDER_MODEL_ID
  • copilot help providers-env and copilot help environment now say COPILOT_PROVIDER_TRANSPORT=websockets works only with provider type openai and the responses wire API, instead of implying it works for azure and anthropic too
  • copilot help providers-env no longer says COPILOT_PROVIDER_API_KEY_COMMAND output is always sent: it says the command does not run when COPILOT_PROVIDER_BEARER_TOKEN is set, and that a custom credential header's precedence depends on the provider type
  • copilot help providers-env and copilot help environment now say that COPILOT_PROVIDER_* variables take precedence over a saved providers.json, unless COPILOT_PROVIDERS_CONFIG names the file
  • copilot help providers-local now says Copilot looks for Ollama only on this machine, and that an OLLAMA_HOST on another machine is ignored
  • Running /research again on the same topic, or on a topic that starts with the same words, now saves a new report instead of trying to write over the earlier one.
  • The sandbox.auth.git setting description now says sandboxed git gets a masked credential that the sandbox proxy swaps for the real one only at that HTTPS origin, and that hosts other than GitHub use your own git credential helper, instead of saying the GitHub token is injected
  • The sandbox.userPolicy.network.proxy.url setting description now says sandboxed traffic always reaches the configured proxy through the built-in local proxy, which keeps proxy credentials away from sandboxed commands, instead of saying traffic without host rules uses the proxy directly
  • Sessions closed or disposed outside the sessions API no longer stay in memory in the CLI's embedded SDK server
  • A collapsed grep or glob row now counts only the files or lines a search found, not the summary lines of a large result or an appended warning, which made an empty search read "3 files found".
  • The search subagent's semantic_search tool now tells the model it returns up to 5 excerpts from GitHub's code index for the repository, instead of claiming to search the local workspace and return its full contents when small.
  • The /settings value column, the footer's model name and the startup warning for an invalid allowedUrls or deniedUrls entry no longer pass control characters from settings.json to the terminal.
  • The subagents.maxConcurrency and subagents.maxDepth setting descriptions now say the settings are ignored on Copilot plans without usage-based billing, instead of saying they apply only to usage-based billing users
  • copilot update --help no longer calls stable the default update channel: with no channel argument and no autoUpdatesChannel setting, a prerelease build stays on prerelease
  • A mistyped server in your own mcp-config.json is now reported at startup and in mcp list, and an mcp-config.json that cannot be used names the file and the real problem.
  • On Windows, memory the runtime frees after a turn, a session resume or a closed session is now returned to the system instead of staying committed to the process
  • copilot workflow run now explains that dynamic workflows need experimental features (or a non-disabled extension mode) and exits with status 2, instead of failing with an internal error
  • Cancelled, denied, or failed memory votes now show "Memory update failed" in the timeline
  • Unquoted prompts get accurate quoting guidance without suggestions that turn CLI options into prompt text.
  • Keep selected skill problems visible while navigating long /skills problem lists
  • Show parser errors for mistyped --prompt/--interactive options, and shell-neutral guidance instead of an unsafe -i suggestion for prompts with shell-sensitive characters
  • Repository settings warnings point to the actual syntax error in files with comments or trailing commas
  • Preserve file names, globs, and links in expanded JSON tool results instead of interpreting them as Markdown
  • Display search patterns and tool errors in the concise transcript without letting escape sequences alter terminal colors or formatting.
  • Preserve settings saved by other sessions when changing nested settings in /settings or /config
  • Pressing Esc after reopening /help over another full-screen view returns to the prompt without leaving the CLI blank and unresponsive
  • MCP dashboard now keeps runtime-only servers read-only on local sessions
  • Warn when a collected debug bundle has missing or empty process logs
  • /rubber-duck is offered on the default model from the start of a session, on Auto once a model has been picked, and after switching to an eligible model with /model
  • Backspace at the start of shell input exits shell mode and keeps the typed text, so a prompt that enters shell mode while editing is no longer stuck there
  • Clear the compaction indicator when background summarization finishes, even while a tool is still running
  • Show an error when a selected or saved model is unavailable instead of silently switching to another model
  • Sandbox denied paths on Linux now block access to d...
Read more

1.0.109-1

1.0.109-1 Pre-release
Pre-release

Choose a tag to compare

Added

  • Add IPv4/IPv6 CIDR support for sandbox host allow and deny rules in settings.
  • Add support for Claude Fable 5.2 in the model picker under New models

Improved

  • Sandbox path settings support environment variables while preserving authored expressions in settings and the editor.
  • Use cache-aware background wait timeouts by default in interactive sessions

Fixed

  • copilot help input now says that Backspace at the start of shell input leaves shell mode and keeps the typed text, not only on an empty prompt
  • /subagents keeps its Overridden and Status columns readable on narrow terminals and aligns agent names with wide characters
  • Removing a built-in MCP server with copilot mcp remove or /mcp delete explains how to disable it instead
  • Selecting a directory next to your home directory in /cd ~ or /add-dir ~ uses the correct full path
  • Trusted-folder and worktree confirmations keep Windows path separators
  • Hide empty assistant reply bullets when a response contains only whitespace
  • Choosing "don't ask again" for parallel file operations approves all covered requests without prompting again
  • Make /terminal-setup configure Shift+Enter in the correct location for VS Code, Cursor, and Windsurf on Linux when XDG_CONFIG_HOME is set
  • The footer's AI credits now update as soon as /compact finishes instead of after the next turn
  • Prompt mode with --output-format json emits a final result record with an exit status even when a run fails early
  • Rate-limit errors now name the same mode as the switch dialog (Copilot Fusion mode or auto mode) instead of "auto model"
  • In a multi-line prompt, Up and Down now start from the cursor after Left, Right, Backspace, Delete or a similar key that had nothing to act on at the start or end of the text, instead of jumping to the column of the previous Up/Down run
  • Number keys keep working in shell and URL approval dialogs after pressing the number of the "No, and tell Copilot" option and moving back up
  • /cd . and /add-dir . now keep the current directory in a git repository instead of selecting .git; the directory picker lists ./ first and still offers hidden directories below it
  • In ACP mode, a preToolUse hook that answers ask now asks the ACP client to allow or deny the tool call instead of denying it as host policy
  • /voice immediately reports an overly long socket path and how to fix it, instead of waiting before showing a generic error.
  • File move permission prompts show both source and destination paths, and pure renames no longer show an empty diff.
  • Session history keeps every turn when a second window works on a session another window still has open

1.0.109-0

1.0.109-0 Pre-release
Pre-release

Choose a tag to compare

Improved

  • Ask for confirmation before /share or /export follows symlinks when saving local files
  • URL permission prompts let you approve every subdomain for the current session
  • Read-only shell scripts ask for permission less often, while scripts that change git refs or read files through hidden paths now always get reviewed

Fixed

  • The beepOnSchedule setting description now says it controls the beep when a scheduled /every or /after turn finishes, and only while beep is on, instead of a beep when the prompt fires
  • The companyAnnouncements setting description now says one message, picked at random, appears in the timeline as a Company announcement notice, not in the startup banner
  • copilot help config no longer says turning off compactPaste shows every paste in full; pastes over 20 KB are still saved to a workspace file
  • copilot help config now names the home screen tabs as they appear, Current and Sessions, instead of Session and Agents
  • The ctrl+h entry in the keyboard shortcut help now says it deletes the previous word in local Windows terminals, where the terminal sends the same key for ctrl+h and ctrl+backspace
  • The footer.showModelEffort setting description now says it toggles only the reasoning effort label next to the model name, which always shows, and that the effort shows briefly after it changes when the setting is unset
  • copilot help config no longer names staff-only and internal settings, such as taskbarPresence, showTipsOnStartup and streamerMode
  • The ide.openDiffOnEdit setting description now says the IDE diff opens for a file edit waiting for your approval, and that accepting or rejecting it answers that prompt, instead of a diff on every edit
  • Text typed after /init now reaches the model as extra guidance for the generated instructions file and appears in the timeline, instead of being silently dropped.
  • The /init usage hint now shows [suppress|<instructions>], since text after /init guides what it writes, instead of listing only suppress
  • The inlineImages setting description no longer says images render with Sixel graphics by default; Sixel is used only with experimental features on
  • MCP tool results that return text as a base64 blob resource with a text MIME type, such as text/plain or application/json, now reach the model instead of arriving as an empty result
  • copilot help providers-env and copilot help environment no longer say COPILOT_PROVIDER_BEARER_TOKEN always takes precedence over COPILOT_PROVIDER_API_KEY: it does for openai and azure, but anthropic sends both
  • copilot help providers-env and copilot help environment now say COPILOT_PROVIDER_MODEL_ID and COPILOT_PROVIDER_WIRE_MODEL default to the --model value before COPILOT_MODEL, and that the wire model falls back to COPILOT_PROVIDER_MODEL_ID
  • copilot help providers-env and copilot help environment now say COPILOT_PROVIDER_TRANSPORT=websockets works only with provider type openai and the responses wire API, instead of implying it works for azure and anthropic too
  • copilot help providers-env no longer says COPILOT_PROVIDER_API_KEY_COMMAND output is always sent: it says the command does not run when COPILOT_PROVIDER_BEARER_TOKEN is set, and that a custom credential header's precedence depends on the provider type
  • copilot help providers-env and copilot help environment now say that COPILOT_PROVIDER_* variables take precedence over a saved providers.json, unless COPILOT_PROVIDERS_CONFIG names the file
  • copilot help providers-local now says Copilot looks for Ollama only on this machine, and that an OLLAMA_HOST on another machine is ignored
  • Running /research again on the same topic, or on a topic that starts with the same words, now saves a new report instead of trying to write over the earlier one.
  • The sandbox.auth.git setting description now says sandboxed git gets a masked credential that the sandbox proxy swaps for the real one only at that HTTPS origin, and that hosts other than GitHub use your own git credential helper, instead of saying the GitHub token is injected
  • The sandbox.userPolicy.network.proxy.url setting description now says sandboxed traffic always reaches the configured proxy through the built-in local proxy, which keeps proxy credentials away from sandboxed commands, instead of saying traffic without host rules uses the proxy directly
  • Sessions closed or disposed outside the sessions API no longer stay in memory in the CLI's embedded SDK server
  • A collapsed grep or glob row now counts only the files or lines a search found, not the summary lines of a large result or an appended warning, which made an empty search read "3 files found".
  • The search subagent's semantic_search tool now tells the model it returns up to 5 excerpts from GitHub's code index for the repository, instead of claiming to search the local workspace and return its full contents when small.
  • The /settings value column, the footer's model name and the startup warning for an invalid allowedUrls or deniedUrls entry no longer pass control characters from settings.json to the terminal.
  • The subagents.maxConcurrency and subagents.maxDepth setting descriptions now say the settings are ignored on Copilot plans without usage-based billing, instead of saying they apply only to usage-based billing users
  • copilot update --help no longer calls stable the default update channel: with no channel argument and no autoUpdatesChannel setting, a prerelease build stays on prerelease
  • A mistyped server in your own mcp-config.json is now reported at startup and in mcp list, and an mcp-config.json that cannot be used names the file and the real problem.
  • On Windows, memory the runtime frees after a turn, a session resume or a closed session is now returned to the system instead of staying committed to the process
  • copilot workflow run now explains that dynamic workflows need experimental features (or a non-disabled extension mode) and exits with status 2, instead of failing with an internal error
  • Cancelled, denied, or failed memory votes now show "Memory update failed" in the timeline
  • Unquoted prompts get accurate quoting guidance without suggestions that turn CLI options into prompt text.
  • Keep selected skill problems visible while navigating long /skills problem lists
  • Show parser errors for mistyped --prompt/--interactive options, and shell-neutral guidance instead of an unsafe -i suggestion for prompts with shell-sensitive characters
  • Repository settings warnings point to the actual syntax error in files with comments or trailing commas
  • Preserve file names, globs, and links in expanded JSON tool results instead of interpreting them as Markdown
  • Display search patterns and tool errors in the concise transcript without letting escape sequences alter terminal colors or formatting.
  • Preserve settings saved by other sessions when changing nested settings in /settings or /config
  • Pressing Esc after reopening /help over another full-screen view returns to the prompt without leaving the CLI blank and unresponsive
  • MCP dashboard now keeps runtime-only servers read-only on local sessions
  • Warn when a collected debug bundle has missing or empty process logs
  • /rubber-duck is offered on the default model from the start of a session, on Auto once a model has been picked, and after switching to an eligible model with /model
  • Backspace at the start of shell input exits shell mode and keeps the typed text, so a prompt that enters shell mode while editing is no longer stuck there
  • Clear the compaction indicator when background summarization finishes, even while a tool is still running
  • Show an error when a selected or saved model is unavailable instead of silently switching to another model
  • Sandbox denied paths on Linux now block access to developer-tool configuration files inside those paths.
  • Use custom agents added to .github/agents/ during a session without reloading
  • Start sessions faster with --session-id when you have a large local session history
  • Preserve settings changes when another CLI session saves a different setting at the same time
  • Prevent duplicate shell commands from staying pending when parallel sub-agents request approval, including after resuming a session
  • IDE discovery and auto-connect work when the CLI cannot signal the IDE process, including across sandbox boundaries
  • Connect to MCP servers that omit optional discovery cache hints, making their tools available to Copilot
  • MCP servers can use stored secrets in the default profile without requiring --config-dir
  • Resume sessions saved by earlier CLI versions with unreadable code-change line counts
  • Ensure post-checkout hooks run Git commands against the intended repository when using --worktree
  • Ctrl+C dismisses dialogs or exits reverse search without cancelling an ongoing /compact
  • Resume sessions by name with --resume or /resume even when names contain special characters
  • Repository scans skip nested filesystems, avoiding stalled-mount exit delays on Linux when statx is available
  • Built-in file and text searches work on ARM64 Linux systems with 16 KiB or 64 KiB memory pages
  • Canceling the Autopilot confirmation leaves picker-submitted slash commands unexecuted, and confirming runs them only once
  • MCP servers disabled by repository settings now stop when you trust the folder, removing their tools from the session.
  • The /mcp screen respects repository-disabled servers and no longer labels them as session-disabled
  • Show error details when expanding failed search or diagnostics calls with Ctrl+O
  • Continuing from the session credit limit dialog no longer shows a false "Session limit reached" notice.
  • Hide inaccurate context percentages in /context and the footer when Auto uses Copilot Fusion High or Max.
  • Preserve file contents when renaming files with case-only changes or moving them through symlinked directories
  • Markd...
Read more

1.0.108

Choose a tag to compare

@copilot-cli-release-app copilot-cli-release-app released this 09 Nov 16:20

2026-11-09

  • Add sandbox.userPolicy.filesystem.enumeratePaths in settings.json for Windows enumerate-only directory grants
  • Add /index commands and enable managed shared tgrep indexing by default for eligible repositories
  • PDF attachments on Grok 4.7 and Grok 4.6 fall back to file references instead of failing the turn
  • With the sandbox on, a running local MCP server is now restarted after /cd, so it follows the new directory's denied paths instead of keeping those of the directory the session left.
  • A file attachment sent through the SDK that points at a named pipe, socket or device is now tagged as an error instead of stalling the turn until something writes to the pipe.
  • The canvas tools now tell the model which instance IDs open_canvas accepts, instead of calling them free-form.
  • /model now lists models when Copilot answers the model list request with 421 Misdirected Request, for example after a plan change, by re-resolving your account's endpoint as chat turns already do instead of showing "Error loading model list".
  • Requests to OpenAI-compatible chat-completions providers no longer include an internal message field on skill and tool messages.
  • Ctrl+C now stops a running /compact, as Esc Esc does, instead of only arming the exit hint and quitting the CLI on a second press.
  • The /config help no longer shows literal backticks or uses a model outside the model list as its example.
  • Your defaultMode setting now applies when you close the startup session picker while the session is still loading its model, instead of the session staying in its previous mode.
  • A disabledSkills entry, skills.disable and skills.enable now match a skill name in any letter case, as invoking the skill does, instead of silently doing nothing when the case differs.
  • Creating or resuming an SDK session, or replacing its tools, with two custom tools of the same name is now an error. Before, the model was offered the first definition while some SDKs ran the handler of the last one.
  • Copilot no longer crashes with an unhandled exception at startup when it cannot save its first-launch timestamp, for example because the disk holding the Copilot home directory is full. The failure is logged and startup continues.
  • The Getting started box no longer suggests /init in a folder where you ran /init suppress, in a repository that already has Copilot instructions, or outside a git repository.
  • copilot help config now names the .claude/rules instruction files and the .claude/settings.json repository settings the CLI reads.
  • copilot help input now says that esc esc also stops a running /compact, and that in shell mode a single esc or ctrl+c on an empty prompt leaves shell mode
  • /help now describes ctrl+d (exits only on an empty prompt, otherwise deletes the next character) and ctrl+z on Windows correctly, and lists ctrl+j, ctrl+v, ctrl+y and the voice input keys.
  • copilot help limits now quotes the rate-limit prompt as local sessions show it, "Switch to Copilot Fusion mode?", instead of "Switch to auto mode?".
  • copilot help mcp now says that a directory's .github/mcp.json is ignored when the same directory has a .mcp.json, instead of implying the two files are merged
  • copilot help monitoring now describes the github.copilot.sandbox.operation.count metric as counting every sandbox decision by kind, not only deduplicated posture changes.
  • Pasting an image path again after clearing its [image: ...] label with Ctrl+U, Ctrl+K, Ctrl+W or an Up-arrow history recall attaches the image again instead of inserting the plain path.
  • Backspace, an arrow key, Ctrl+U or Shift+Enter pressed right after a paste now acts after the pasted text instead of on the text in front of it.
  • Picking an MCP server type by its number in the add or edit form now moves focus to the next field for that type.
  • /permissions default in Autopilot now asks again how to handle permissions on the next prompt, as /permissions manual does, instead of leaving Autopilot to deny every tool request.
  • A queued /ask or /btw that runs while another side answer is open now shows that it is still thinking, instead of showing the previous answer as its own finished answer for Ctrl+Y to copy.
  • copilot --resume and /resume now find a session whose name has an accent typed precomposed or decomposed, whichever spelling the session was saved with.
  • In /search, Up, Down and Enter bring a single match back into view after you scroll away, and a shorter terminal no longer leaves the current match off screen.
  • /security-review help now says it reviews the branch diff when the working tree is clean, not only staged and unstaged changes
  • Escape sequences in checkpoint titles, file names, Copilot home paths and generated agent names no longer restyle /session info or the /agent wizard.
  • Long values in /session info, such as the log and session file paths, now wrap under their own column instead of back under the label
  • Switching to another session no longer occasionally replaces that session's model with Auto while the model list reloads.
  • /share usage no longer implies that /share alone exports a markdown file; it shows that a bare path must contain /, . or ~.
  • A path or URL route in a prompt, such as /docs/setup.md, no longer loads a skill named after its first segment (docs) as if you had invoked that skill.
  • Subcommands of /pr, /lsp, /skills, /plugin, /user and /collect-debug-logs now match in any letter case, so /lsp TEST my-server runs the test instead of showing usage text.
  • Help for /experimental and /theme now marks /experimental on|off and /theme <mode> as deprecated and points at /settings, and /mcp disable is no longer described as temporary: it is saved across sessions.
  • A repository sessionStart prompt hook that runs /clear <prompt> or /new now starts one new session instead of starting another one in every session it creates.
  • The duration shown on a sub-agent no longer counts the time its tool calls spent at permission prompts.
  • The /subagents help no longer promises a default subagent model. It now says the command configures each subagent's model and settings and turns subagents on or off.
  • Tab characters in replies, error messages, agent names and other text are now shown as spaces instead of being dropped, so tab-separated words no longer run together.
  • The duration shown on a tool call no longer counts the time spent at its permission prompt, and it does not tick while the prompt is open.
  • The /update channel choices now say that picking stable or prerelease also saves it as your update channel for future updates.
  • Preserve input queued behind a paste when resizing the terminal
  • Memory import reports malformed repository scopes without a false unsupported host error
  • Show a warning when a selected custom agent's configured skills are missing or cannot be loaded
  • Include session start, resume, and model-change events in -p --output-format json output
  • Keep built-in agents selected with --agent active when opening /agent or refreshing available agents
  • Interactive CLI sessions pass local MCP server environment values literally; use ${NAME} to reference a host environment variable
  • Allow semantic code search to find renamed repositories when the checkout still uses the old name
  • Use Ctrl+T to show and hide First Pass reasoning when Fusion is selected through a routing profile
  • Keep the selected match in view when opening /search or /find instead of jumping to the bottom of the conversation.
  • Allow the system to sleep again after a background MCP reload finishes when using /keep-alive busy.
  • Keep the footer's plan hint visible when a nonempty plan is available
  • Interactive Autopilot waits for your response to MCP input and consent requests instead of automatically declining them
  • /mcp enable now respects repository settings that disable an MCP server
  • Renaming files with the patch tool now succeeds without requiring changes to their contents
  • File diffs in the concise transcript show terminal escape sequences as visible characters and preserve added and removed line colors
  • Reduce CPU usage during builds in large worktrees when language servers watch for file changes
  • Headless runs now report an error when resuming a session in use by another Copilot process, keeping its history intact.
  • MCP deny rules now block a tool named the way its MCP server advertises it (for example server(weather.lookup)), not only its sanitized name, even with --allow-all-tools
  • On Linux, language servers are no longer told that the files in a directory were deleted when the directory is renamed away and straight back.
  • On Linux, language servers are now told when a directory is renamed (the old files deleted, the new ones created) while other directories in the workspace are being created and removed, such as during a package install.
  • A canvas that was open when a session was resumed is now restored even if its extension restarts while the canvas is being reopened, instead of staying unavailable.
  • When a preToolUse hook asks about several parallel tool calls, each call gets its own confirmation again: answering No with feedback to one no longer denies the others without asking.
  • Attaching an empty PDF or Office document no longer fails the turn on models that read documents natively; the empty file is passed as a file reference instead.
  • Connect to an already running /voice server even when its PID file is missing
  • /limits unset now clears session AI credit caps for subsequent requests
  • /plugin install from a repository, URL or local path now shows the same deprecation warning that copilot plugin install prints.
  • Automatic updates are no longer skipped for a launch when signing in takes more than about a second
  • /changelog can retrieve release notes for versions not bundled with the CLI
  • A turn that ends while the session event lo...
Read more

1.0.108-1

1.0.108-1 Pre-release
Pre-release

Choose a tag to compare

Fixed

  • PDF attachments on Grok 4.7 and Grok 4.6 fall back to file references instead of failing the turn
  • With the sandbox on, a running local MCP server is now restarted after /cd, so it follows the new directory's denied paths instead of keeping those of the directory the session left.

1.0.108-0

1.0.108-0 Pre-release
Pre-release

Choose a tag to compare

Added

  • Add sandbox.userPolicy.filesystem.enumeratePaths in settings.json for Windows enumerate-only directory grants
  • Add /index commands and enable managed shared tgrep indexing by default for eligible repositories

Improved

  • Answer questions about Copilot CLI behavior from this build's own documentation and clearly say when docs do not cover a question.
  • Keep successful command output and file diffs collapsed in concise transcript mode until expanded, while keeping running output and failure details visible.
  • Show MCP form validation errors beside inputs, focus the first invalid field, and improve screen-reader labels and cursor positioning
  • Since 1.0.106, Autopilot with Assisted Permissions no longer stops for permission prompts; the agent tries another approach and reports the actions it could not take
  • Managed plugin assignments with state "defaultEnabled" now install and activate plugins by default while preserving user overrides.

Fixed

  • A file attachment sent through the SDK that points at a named pipe, socket or device is now tagged as an error instead of stalling the turn until something writes to the pipe.
  • The canvas tools now tell the model which instance IDs open_canvas accepts, instead of calling them free-form.
  • /model now lists models when Copilot answers the model list request with 421 Misdirected Request, for example after a plan change, by re-resolving your account's endpoint as chat turns already do instead of showing "Error loading model list".
  • Requests to OpenAI-compatible chat-completions providers no longer include an internal message field on skill and tool messages.
  • Ctrl+C now stops a running /compact, as Esc Esc does, instead of only arming the exit hint and quitting the CLI on a second press.
  • The /config help no longer shows literal backticks or uses a model outside the model list as its example.
  • Your defaultMode setting now applies when you close the startup session picker while the session is still loading its model, instead of the session staying in its previous mode.
  • A disabledSkills entry, skills.disable and skills.enable now match a skill name in any letter case, as invoking the skill does, instead of silently doing nothing when the case differs.
  • Creating or resuming an SDK session, or replacing its tools, with two custom tools of the same name is now an error. Before, the model was offered the first definition while some SDKs ran the handler of the last one.
  • Copilot no longer crashes with an unhandled exception at startup when it cannot save its first-launch timestamp, for example because the disk holding the Copilot home directory is full. The failure is logged and startup continues.
  • The Getting started box no longer suggests /init in a folder where you ran /init suppress, in a repository that already has Copilot instructions, or outside a git repository.
  • copilot help config now names the .claude/rules instruction files and the .claude/settings.json repository settings the CLI reads.
  • copilot help input now says that esc esc also stops a running /compact, and that in shell mode a single esc or ctrl+c on an empty prompt leaves shell mode
  • /help now describes ctrl+d (exits only on an empty prompt, otherwise deletes the next character) and ctrl+z on Windows correctly, and lists ctrl+j, ctrl+v, ctrl+y and the voice input keys.
  • copilot help limits now quotes the rate-limit prompt as local sessions show it, "Switch to Copilot Fusion mode?", instead of "Switch to auto mode?".
  • copilot help mcp now says that a directory's .github/mcp.json is ignored when the same directory has a .mcp.json, instead of implying the two files are merged
  • copilot help monitoring now describes the github.copilot.sandbox.operation.count metric as counting every sandbox decision by kind, not only deduplicated posture changes.
  • Pasting an image path again after clearing its [image: ...] label with Ctrl+U, Ctrl+K, Ctrl+W or an Up-arrow history recall attaches the image again instead of inserting the plain path.
  • Backspace, an arrow key, Ctrl+U or Shift+Enter pressed right after a paste now acts after the pasted text instead of on the text in front of it.
  • Picking an MCP server type by its number in the add or edit form now moves focus to the next field for that type.
  • /permissions default in Autopilot now asks again how to handle permissions on the next prompt, as /permissions manual does, instead of leaving Autopilot to deny every tool request.
  • A queued /ask or /btw that runs while another side answer is open now shows that it is still thinking, instead of showing the previous answer as its own finished answer for Ctrl+Y to copy.
  • copilot --resume and /resume now find a session whose name has an accent typed precomposed or decomposed, whichever spelling the session was saved with.
  • In /search, Up, Down and Enter bring a single match back into view after you scroll away, and a shorter terminal no longer leaves the current match off screen.
  • /security-review help now says it reviews the branch diff when the working tree is clean, not only staged and unstaged changes
  • Escape sequences in checkpoint titles, file names, Copilot home paths and generated agent names no longer restyle /session info or the /agent wizard.
  • Long values in /session info, such as the log and session file paths, now wrap under their own column instead of back under the label
  • Switching to another session no longer occasionally replaces that session's model with Auto while the model list reloads.
  • /share usage no longer implies that /share alone exports a markdown file; it shows that a bare path must contain /, . or ~.
  • A path or URL route in a prompt, such as /docs/setup.md, no longer loads a skill named after its first segment (docs) as if you had invoked that skill.
  • Subcommands of /pr, /lsp, /skills, /plugin, /user and /collect-debug-logs now match in any letter case, so /lsp TEST my-server runs the test instead of showing usage text.
  • Help for /experimental and /theme now marks /experimental on|off and /theme <mode> as deprecated and points at /settings, and /mcp disable is no longer described as temporary: it is saved across sessions.
  • A repository sessionStart prompt hook that runs /clear <prompt> or /new now starts one new session instead of starting another one in every session it creates.
  • The duration shown on a sub-agent no longer counts the time its tool calls spent at permission prompts.
  • The /subagents help no longer promises a default subagent model. It now says the command configures each subagent's model and settings and turns subagents on or off.
  • Tab characters in replies, error messages, agent names and other text are now shown as spaces instead of being dropped, so tab-separated words no longer run together.
  • The duration shown on a tool call no longer counts the time spent at its permission prompt, and it does not tick while the prompt is open.
  • The /update channel choices now say that picking stable or prerelease also saves it as your update channel for future updates.
  • Preserve input queued behind a paste when resizing the terminal
  • Memory import reports malformed repository scopes without a false unsupported host error
  • Show a warning when a selected custom agent's configured skills are missing or cannot be loaded
  • Include session start, resume, and model-change events in -p --output-format json output
  • Keep built-in agents selected with --agent active when opening /agent or refreshing available agents
  • Interactive CLI sessions pass local MCP server environment values literally; use ${NAME} to reference a host environment variable
  • Allow semantic code search to find renamed repositories when the checkout still uses the old name
  • Use Ctrl+T to show and hide First Pass reasoning when Fusion is selected through a routing profile
  • Keep the selected match in view when opening /search or /find instead of jumping to the bottom of the conversation.
  • Allow the system to sleep again after a background MCP reload finishes when using /keep-alive busy.
  • Keep the footer's plan hint visible when a nonempty plan is available
  • Interactive Autopilot waits for your response to MCP input and consent requests instead of automatically declining them
  • /mcp enable now respects repository settings that disable an MCP server
  • Renaming files with the patch tool now succeeds without requiring changes to their contents
  • File diffs in the concise transcript show terminal escape sequences as visible characters and preserve added and removed line colors
  • Reduce CPU usage during builds in large worktrees when language servers watch for file changes
  • Headless runs now report an error when resuming a session in use by another Copilot process, keeping its history intact.
  • MCP deny rules now block a tool named the way its MCP server advertises it (for example server(weather.lookup)), not only its sanitized name, even with --allow-all-tools
  • On Linux, language servers are no longer told that the files in a directory were deleted when the directory is renamed away and straight back.
  • On Linux, language servers are now told when a directory is renamed (the old files deleted, the new ones created) while other directories in the workspace are being created and removed, such as during a package install.
  • A canvas that was open when a session was resumed is now restored even if its extension restarts while the canvas is being reopened, instead of staying unavailable.
  • When a preToolUse hook asks about several parallel tool calls, each call gets its own confirmation again: answering No with feedback to one no longer denies the others without asking.
  • Attaching an empty PDF or Office document no longer fails the turn on models that read documents natively; the empty file is passed as a file reference instead.
  • Connect to an already running /voice server even when i...
Read more

1.0.107

Choose a tag to compare

@copilot-cli-release-app copilot-cli-release-app released this 06 Nov 20:37

2026-11-06

  • Rex terminals render inline images using Kitty direct placements.
  • Add /code command to open the current session in VS Code
  • Add a Fusion tier setting to copilot config.
  • Make /settings open the unified dashboard for all users and add global search across settings and local resources.
  • Interactive CLI reports program status to supporting terminals, including when attention is needed.
  • Add opt-in session management tools and @mentions for opted-in local sessions
  • Add COPILOT_SESSION_CWD for launching and expanding LSP and local MCP server configs
  • Add GPT-6.1 Terra as a selectable model under New models when available to your account
  • Add a Sandbox extensions setting to run extension processes inside the sandbox
  • Add MATS telemetry for Entra authentication through OneAuth, respecting client telemetry opt-out.
  • An image removed from the prompt with Ctrl+U, Ctrl+K or Ctrl+W, or replaced by a recalled history entry, is no longer sent with the message, and Ctrl+S can stash the prompt afterwards.
  • Pasted text containing NEL, Unicode line or paragraph separators now fills separate prompt lines, and pasted DEL and C1 control characters are dropped, instead of being kept in the prompt and cutting characters off the end of the row.
  • In copilot -p --plan, the agent is no longer told to suggest Shift+Tab to leave plan mode, which only works in the interactive interface, and is asked to include the plan's key points in its reply instead.
  • copilot --resume <id> no longer waits with no output and no end when the Copilot task service does not respond; the task lookup now gives up after 10 seconds and resolution continues.
  • Sandboxed grep, rg, and glob now report Windows launch failures instead of silent no-match results
  • Model picker shows context window size for flat, unpriced, and single-tier models
  • Sandboxed local MCP servers respect relative filesystem permissions from the session directory, even when configured with a different working directory.
  • PowerShell commands work on Windows when the CLI is installed in a long directory path
  • Switching sessions while other sessions are busy no longer crashes the CLI and leaves a blank terminal
  • Keep readable image attachments when retrying a prompt that contains a corrupt image
  • MCP Entra authentication now falls back to the VS Code registration when Copilot CLI preauthorization is unavailable.
  • Sandboxed local MCP servers now start correctly when configured with a relative cwd.
  • On Windows, sandboxed sessions in nested Git directories can change to and write at the repository root
  • Autopilot no longer starts implementing its own recommendation after a request that only asked for a review or analysis
  • Suppress unnecessary MCP reload summaries when plugin servers remain unchanged
  • A model request that Copilot's service answers with an empty 404 while under load is now retried instead of ending the turn with "Execution failed: 404".
  • copilot help config now lists every setting the settings catalog offers, including the ones that were missing from its hand-written text, such as askUser, effortLevel, planModel, toolSearch and worktreeBaseRef
  • ACP clients can switch a session started with --yolo out of autopilot, and allow-all stays on, instead of the switch failing as blocked by policy and a second attempt turning allow-all off.
  • The @ file picker now underlines a name with a capital dotted I, such as ฤฐstanbul.txt, when the query is typed without the dot, and no longer shortens that row's matched folder.
  • The @ file picker now underlines matches in names stored with decomposed accents or found by a query typed without accents, and no longer shortens such a row's matched folder.
  • Up and Down in a multi-line prompt keep the column you started from when they pass through a shorter line, instead of leaving the caret near the start of the line.
  • Ctrl+Y and /share research skip research folder entries that are not readable files, such as a broken link or a folder named like a report, instead of failing or offering them.
  • Show each agent's selection ID in /agent when multiple agents share a display name.
  • The edit tool now fails at once on a named pipe, socket or device instead of waiting forever for the other end of a FIFO, which stalled the turn.
  • An empty plan.md no longer shows the ctrl+y plan hint or Plan: yes in /session, and ctrl+y opens the research report instead, matching /session plan.
  • The footer keeps the "N scheduled", sandbox, YOLO and CI status items whole on narrow terminals by shortening the directory and branch first, instead of cutting the items off the end of the row.
  • Pull request, issue and gist details, and their load errors, no longer let escape sequences in titles, names, branches, gist files or server messages restyle the terminal.
  • Show the saved paused goal and continuation guidance when resuming an autopilot session.
  • Issues and pull requests picked with # are no longer dropped from the message when another one is picked in front of them, and an issue picked twice is sent once.
  • copilot help billing now says the footer shows the AI credits used in this session (nothing by default on the legacy billing platform), and that the /statusline quota item is off by default and ai-used is on.
  • copilot help config now says copyOnSelect is on by default on macOS, that /keep-alive changes only the current session, that logLevel is set in the /settings dialog or settings.json rather than copilot config, and that trustedFolders lives in config.json and is filled by the folder-trust prompt.
  • copilot help environment now says a COPILOT_AUTO_TIER value of "fast" is ignored with a notice rather than rejected, and that USE_TGREP=true does not override whether indexed search is available for your account or USE_BUILTIN_RIPGREP=false.
  • copilot help config, copilot help environment and copilot help acp no longer name the hidden --prefer-version, --server and --stdio options.
  • copilot help limits shows a status example at the real minimum AI credit limit and says the final-call warning appears when 10% or less of the limit remains
  • copilot help monitoring now says an http:// OTLP endpoint disables export only when an OTLP CA certificate or client certificate/key variable is set, not for every http:// endpoint.
  • copilot help permissions now documents glob patterns in write(path) and read(path) rules, lists the read and memory kinds, and explains that an unscoped write rule approves shell output redirection but not the command itself; it no longer says wildcard matching is coming in the future.
  • copilot --help and copilot help --help now list the acp help topic, and copilot help --help no longer prints its description and topic list with stray indentation.
  • Form and settings text fields show the control characters of a stored value, such as an MCP server command, instead of letting them recolor or hide its text.
  • Issue and pull request details on the home screen hide HTML comments from the description, as GitHub does, instead of printing template instructions as text
  • Issue and pull request details also hide an HTML comment that a blank line splits inside a <details> or other HTML block, instead of showing its opening and its text.
  • Assistant replies keep angle-bracket words that are not HTML, such as Vec<String>, Set<T> and <file> placeholders, instead of silently dropping them from the sentence.
  • Removing a local marketplace now refuses while one of its plugins is enabled, --force also clears that plugin, and /plugin marketplace remove accepts --force before the name.
  • A follow-up sent while an earlier one is pending is no longer rejected with "Submission failed" when it mentions a file with a very long number after a colon (@file:99999999999999999999).
  • The model picker keeps its Context and Reasoning column labels when a search or scroll hides the first model group.
  • The /model picker shows token prices in terminals narrower than 64 columns, and the dot leaders start right after each price label.
  • --no-ask-user and the askUser setting now say they remove the ask_user question form, and that the agent can still ask questions in its replies; they no longer say the agent stops asking questions.
  • The /user switch, environment and /mcp auth pickers, the Run on: status and the Outgoing connections list no longer let escape sequences in names, paths or URLs restyle the terminal.
  • Plugin rules with alwaysApply: false now stay out of the prompt until you enable them in /instructions; before, every session applied them until /instructions or /plugins was opened.
  • /pr shows the pull request's title, labels and branch as written, so a title such as Fix init.py exports no longer loses its underscores and turns bold.
  • /pr shows a closed or merged draft as Closed or Merged, keeps branch names and labels that contain a | intact, and counts a check run that failed to start or is waiting on an action as failing instead of pending.
  • A repository hook file under .github/hooks that cannot be read, or a hook entry in it that is invalid, is now reported with the file and the reason, at startup and after /cd into the repository, instead of being skipped silently.
  • /session delete --yes=false and a mistyped --yes=<value> no longer delete the current session, and /session delete --local-only <id> now previews that session.
  • Completed /ask and /btw answers left open now reappear when you return to their session within the same CLI process.
  • copilot skill remove and /skills remove now forget the removed skill's disabled state, so a skill added later under the same name no longer starts disabled.
  • When --ui-server cannot start its server (port already in use or out of range), the session now shows why instead of starting without it silently
  • Sessions where a tool returned a binary result of a type other th...
Read more

1.0.106

Choose a tag to compare

@copilot-cli-release-app copilot-cli-release-app released this 06 Nov 01:47
e192829

2026-11-05

  • Rex terminals render inline images using Kitty direct placements.
  • Add /code command to open the current session in VS Code
  • Add a Fusion tier setting to copilot config.
  • Make /settings open the unified dashboard for all users and add global search across settings and local resources.
  • Interactive CLI reports program status to supporting terminals, including when attention is needed.
  • Add opt-in session management tools and @mentions for opted-in local sessions
  • Add COPILOT_SESSION_CWD for launching and expanding LSP and local MCP server configs
  • Add GPT-6.1 Terra as a selectable model under New models when available to your account
  • Add a Sandbox extensions setting to run extension processes inside the sandbox
  • Add MATS telemetry for Entra authentication through OneAuth, respecting client telemetry opt-out.
  • An image removed from the prompt with Ctrl+U, Ctrl+K or Ctrl+W, or replaced by a recalled history entry, is no longer sent with the message, and Ctrl+S can stash the prompt afterwards.
  • Pasted text containing NEL, Unicode line or paragraph separators now fills separate prompt lines, and pasted DEL and C1 control characters are dropped, instead of being kept in the prompt and cutting characters off the end of the row.
  • In copilot -p --plan, the agent is no longer told to suggest Shift+Tab to leave plan mode, which only works in the interactive interface, and is asked to include the plan's key points in its reply instead.
  • copilot --resume <id> no longer waits with no output and no end when the Copilot task service does not respond; the task lookup now gives up after 10 seconds and resolution continues.
  • Sandboxed grep, rg, and glob now report Windows launch failures instead of silent no-match results
  • Model picker shows context window size for flat, unpriced, and single-tier models
  • Sandboxed local MCP servers respect relative filesystem permissions from the session directory, even when configured with a different working directory.
  • PowerShell commands work on Windows when the CLI is installed in a long directory path
  • Switching sessions while other sessions are busy no longer crashes the CLI and leaves a blank terminal
  • Keep readable image attachments when retrying a prompt that contains a corrupt image
  • MCP Entra authentication now falls back to the VS Code registration when Copilot CLI preauthorization is unavailable.
  • Sandboxed local MCP servers now start correctly when configured with a relative cwd.
  • On Windows, sandboxed sessions in nested Git directories can change to and write at the repository root
  • Autopilot no longer starts implementing its own recommendation after a request that only asked for a review or analysis
  • Suppress unnecessary MCP reload summaries when plugin servers remain unchanged
  • A model request that Copilot's service answers with an empty 404 while under load is now retried instead of ending the turn with "Execution failed: 404".
  • copilot help config now lists every setting the settings catalog offers, including the ones that were missing from its hand-written text, such as askUser, effortLevel, planModel, toolSearch and worktreeBaseRef
  • ACP clients can switch a session started with --yolo out of autopilot, and allow-all stays on, instead of the switch failing as blocked by policy and a second attempt turning allow-all off.
  • The @ file picker now underlines a name with a capital dotted I, such as ฤฐstanbul.txt, when the query is typed without the dot, and no longer shortens that row's matched folder.
  • The @ file picker now underlines matches in names stored with decomposed accents or found by a query typed without accents, and no longer shortens such a row's matched folder.
  • Up and Down in a multi-line prompt keep the column you started from when they pass through a shorter line, instead of leaving the caret near the start of the line.
  • Ctrl+Y and /share research skip research folder entries that are not readable files, such as a broken link or a folder named like a report, instead of failing or offering them.
  • Show each agent's selection ID in /agent when multiple agents share a display name.
  • The edit tool now fails at once on a named pipe, socket or device instead of waiting forever for the other end of a FIFO, which stalled the turn.
  • An empty plan.md no longer shows the ctrl+y plan hint or Plan: yes in /session, and ctrl+y opens the research report instead, matching /session plan.
  • The footer keeps the "N scheduled", sandbox, YOLO and CI status items whole on narrow terminals by shortening the directory and branch first, instead of cutting the items off the end of the row.
  • Pull request, issue and gist details, and their load errors, no longer let escape sequences in titles, names, branches, gist files or server messages restyle the terminal.
  • Show the saved paused goal and continuation guidance when resuming an autopilot session.
  • Issues and pull requests picked with # are no longer dropped from the message when another one is picked in front of them, and an issue picked twice is sent once.
  • copilot help billing now says the footer shows the AI credits used in this session (nothing by default on the legacy billing platform), and that the /statusline quota item is off by default and ai-used is on.
  • copilot help config now says copyOnSelect is on by default on macOS, that /keep-alive changes only the current session, that logLevel is set in the /settings dialog or settings.json rather than copilot config, and that trustedFolders lives in config.json and is filled by the folder-trust prompt.
  • copilot help environment now says a COPILOT_AUTO_TIER value of "fast" is ignored with a notice rather than rejected, and that USE_TGREP=true does not override whether indexed search is available for your account or USE_BUILTIN_RIPGREP=false.
  • copilot help config, copilot help environment and copilot help acp no longer name the hidden --prefer-version, --server and --stdio options.
  • copilot help limits shows a status example at the real minimum AI credit limit and says the final-call warning appears when 10% or less of the limit remains
  • copilot help monitoring now says an http:// OTLP endpoint disables export only when an OTLP CA certificate or client certificate/key variable is set, not for every http:// endpoint.
  • copilot help permissions now documents glob patterns in write(path) and read(path) rules, lists the read and memory kinds, and explains that an unscoped write rule approves shell output redirection but not the command itself; it no longer says wildcard matching is coming in the future.
  • copilot --help and copilot help --help now list the acp help topic, and copilot help --help no longer prints its description and topic list with stray indentation.
  • Form and settings text fields show the control characters of a stored value, such as an MCP server command, instead of letting them recolor or hide its text.
  • Issue and pull request details on the home screen hide HTML comments from the description, as GitHub does, instead of printing template instructions as text
  • Issue and pull request details also hide an HTML comment that a blank line splits inside a <details> or other HTML block, instead of showing its opening and its text.
  • Assistant replies keep angle-bracket words that are not HTML, such as Vec<String>, Set<T> and <file> placeholders, instead of silently dropping them from the sentence.
  • Removing a local marketplace now refuses while one of its plugins is enabled, --force also clears that plugin, and /plugin marketplace remove accepts --force before the name.
  • A follow-up sent while an earlier one is pending is no longer rejected with "Submission failed" when it mentions a file with a very long number after a colon (@file:99999999999999999999).
  • The model picker keeps its Context and Reasoning column labels when a search or scroll hides the first model group.
  • The /model picker shows token prices in terminals narrower than 64 columns, and the dot leaders start right after each price label.
  • --no-ask-user and the askUser setting now say they remove the ask_user question form, and that the agent can still ask questions in its replies; they no longer say the agent stops asking questions.
  • The /user switch, environment and /mcp auth pickers, the Run on: status and the Outgoing connections list no longer let escape sequences in names, paths or URLs restyle the terminal.
  • Plugin rules with alwaysApply: false now stay out of the prompt until you enable them in /instructions; before, every session applied them until /instructions or /plugins was opened.
  • /pr shows the pull request's title, labels and branch as written, so a title such as Fix init.py exports no longer loses its underscores and turns bold.
  • /pr shows a closed or merged draft as Closed or Merged, keeps branch names and labels that contain a | intact, and counts a check run that failed to start or is waiting on an action as failing instead of pending.
  • A repository hook file under .github/hooks that cannot be read, or a hook entry in it that is invalid, is now reported with the file and the reason, at startup and after /cd into the repository, instead of being skipped silently.
  • /session delete --yes=false and a mistyped --yes=<value> no longer delete the current session, and /session delete --local-only <id> now previews that session.
  • Completed /ask and /btw answers left open now reappear when you return to their session within the same CLI process.
  • copilot skill remove and /skills remove now forget the removed skill's disabled state, so a skill added later under the same name no longer starts disabled.
  • When --ui-server cannot start its server (port already in use or out of range), the session now shows why instead of starting without it silently
  • Sessions where a tool returned a binary result of a type other th...
Read more