- Enable disabled models directly in CLI when selecting or specifying them
- Add
/contextcommand to visualize token usage - Add
--resumeflag to continue remote sessions locally - Add URL permission controls which affect common shell commands which access the web
- Long commands no longer show duplicate intention headers when wrapping
- Normal text respects terminal's default foreground color
- Update skills help text to reference correct ~/.copilot/skills/ directory
- Disabled MCP servers are now properly ignored when using --disable-mcp-server
- Shared sessions correctly render nested markdown codeblocks
- Log levels now output all messages of that level and higher severity
- Load CA certificates from system and environment variables
- Improve
/modelerror messages to show available and unavailable models - Model picker uses two-column layout with aligned multipliers and clearer visual indicators
- Add STDIO type as synonymous for Local for MCP servers in CLI configuration UI
- Diff display uses your configured git pager (delta, diff-so-fancy)
- Use platform-specific executable from npm install when available
- Publish SHA256 checksums for CLI executables in releases
- Add --available-tools and --excluded-tools to filter which tools the model can use
- Ensure animated or non-animated banner is displayed based on banner and screen reader preferences
- Fix truncation logic for codex models
- Add support for GPT-5.2
- PRU usage rates now displayed correctly
- Fix checkmark and x icon rendering
- Add grep tool Codex models
- Numpad keys work in prompts with Kitty keyboard protocol
- GPT-5.1-Codex-Max is now available in GitHub Copilot CLI
- Add
inferproperty to control custom agent tool visibility - Add CLI executables to GitHub release artifacts
- Add apply_patch toolchain for OpenAI Codex models
- Add
--silentoption to suppress stats output for scripting
- Add syntax highlighting for diffs
- Fix light theme markdown rendering
- Opus 4.5, GPT-4.1 and GPT-5-Mini are now available in GitHub Copilot CLI
- Image data paste now prioritizes pasting contents of image files instead of their file icons.
- Improved timeline rendering of shell tool names
- Add support for GITHUB_ASKPASS environment variable for authentication
- MCP servers work in
--promptmode
- Fix issues with image drag and drop on Windows
- Shell commands are no longer included in Bash and PowerShell history files
- Paste image data from your clipboard directly into the CLI
- Cleanup and update prompts and tool instructions to be more fluid
- Fix file operations timing out while waiting for user permission
- Support adding images to context via drag & dropping and pasting paths to image files. Improved how image slugs are rendered in the input box
- Add
/sharecommand to save session as markdown file or GitHub gist - Fix a bug where cached tokens were displaying as zero at the end of the session
- Enable
USE_BUILTIN_RIPGREPenvironment variable to optionally use ripgrep from PATH - Fix an issue where sourcing custom agents from the remote repository's default branch led to confusions about whether the local copy of the agent was being used
- Fix custom agents configuration issues
- Improve
Ctrl+Cperformance - Improve tool argument parsing safety
- Distinguish tool names from paths and improve tool success/error icons
copilot -pwill no longer interactively prompt for permission requests- Remove unnecessary whitespace from tool descriptions
- Recovery release to fix availability of GPT-5.1, GPT-5.1-Codex, and GPT-5.1-Codex-Mini models
- Recovery release to fix an issue with image resizing
- GPT-5.1, GPT-5.1-Codex, and GPT-5.1-Codex-Mini are now available in GitHub Copilot CLI
- Enabled the CLI agent to read its own
/helpand README to answer questions about its capabilities - Improved parsing of VS Code-formatted custom agents with the
.agent.mdsuffix - Sanitize tool names to fix issues with special characters
- Bundled
ripgrepand addedgrepandglobtools for more performant searching of codebases - Fixed malformed tool call handling before it reaches the UI
- Prevent double line wraps in markdown messages
- Fixed a bug where the file selector was used in multi-line input that led to unexpected up/down arrow behavior
- Fixed a bug where remote MCP server configuration in custom agents was not fetched properly
- Added more detail and improved the styling of the
/sessioncommand's output - Removed the internal
NODE_ENVvariable from the shell tool's environment - Fixed a memory leak when using the interactive shell tool
- Improved line number formatting in file view output
- Lowered the default shell tool timeout and updated prompt language to not imply that timeout means failure
- Ensured that we query the terminal background color before rendering
- Ensured that the agent won't run
pkillon its own PID - Fixed a bug where
copilotwould not quit after an abort signal - Ensure
!commands on Windows use PowerShell when available - Fixed a bug in Windows Terminal where keyboard input was not accepted
- Exit with nonzero code when
-pmode fails due to LLM backend errors (auth failures, quota exhaustion, network issues) - Support for MCP server tool notifications
- Support for
COPILOT_GITHUB_TOKENenvironment variable for authentication (takes precedence overGH_TOKEN) - Improved shell command safety with better heredoc handling outside of commands
- Diff hunk lines now properly fill the width of the diff box
- MCP servers in GitHub Actions environments automatically use
GITHUB_WORKSPACEas working directory /delegatecommand now works correctly when no local changes exist- Custom agents with special characters in filenames no longer fail
- Better error messages when using unsupported models with
/modelcommand - Alternative model providers now work correctly when using different OpenAI base URLs
- Added support for custom agents. Custom agent definitions are pulled from
~/.copilot/agents,.github/agentsin your repository, or your organization's.githubrepository. You can explicitly invoke an agent with the/agentslash command interactively or--agent <agent>noninteractively. Agents are also provided as tools that the model can call during completion of a task - Added a
/delegatecommand to delegate a task asynchronously to Copilot coding agent. Any unstaged changes will be committed to a new branch, a PR will be opened in your GitHub repository, and Copilot will complete work in the background.
- Improve handling of MCP tools containing slashes
- Improve error message from
/model <model>command when using an unsupported model
- Improved our path detection heuristic to avoid various annoying, unnecessary permissions requests:
- Running many standard bash/PowerShell commands that are known to be readonly (Fixes part of https://github.com/github/sweagentd/issues/7372)
- Commands like
npm test -- --somethingin PowerShell - Shell redirections like
> some_file.txtin paths you've already granted write permissions,> /dev/null, and2>&1(Fixes github#211) - Arguments to
gh apilikegh api /repos/user/repo/ec(Fixes github#216)
- Improved prompting for Sonnet 4.5 to reduce the number of intermediate markdown files left in the workspace
- 👀 ...see you at GitHub Universe!
- To conserve context window space, we've limited the list of tools available to the default GitHub MCP server. In our tests, the model will use the GitHub CLI,
gh(if installed) in lieu of missing MCP tools. We added an--enable-all-github-mcp-toolsif you wish to turn on all available tools. Default available tools are: - Code & Repo navigation - get_file_contents - search_code - search_repositories - list_branches - list_commits - get_commit - Issue Management - get_issue - list_issues - get_issue_comments - search_issues - PR Management - pull_request_read - list_pull_requests - search_pull_requests - Workflow Info - list_workflows - list_workflow_runs - get_workflow_run - get_job_logs - get_workflow_run_logs - Misc search - user_search - Bundled
sharpdependency into the CLI package -- we're one step closer to implementing github#16, and this fixes some startup blockers on Windows (fixes github#309 & github#287) - Fixed a bug where input tokens were not tracked properly (Fixes github#337)
- Fixed a bug where MCP tools with arguments would fail with streaming enabled
- Added additional debug logging that will help us investigate github#346
- The model can now call multiple tools in parallel. Each tool must be confirmed in advance. This behavior can be disabled with the
--disable-parallel-tools-executionflag - Added
/quitas an alias of/exit(fixes github#357) - Fixed a bug where every streamed output chunk was sent back to the model as part of the conversation (fixes github#379)
- Ensure that environment variables are expanded before running path permission checks
- Fixed a bug where Ctrl+K deleted to the end of the visual line in the input box rather than the logical line
- Added the temp directory to the paths that the model has access to by default (fixes github#306)
- Copilot's output now streams in token-by-token! This can be disabled with
--stream off - Made improvements to the memory footprint of Copilot CLI, especially when dealing with shell commands that produce very large outputs
- Ensured we preserve comments in VSCode config files when using
/terminal-setup(fixes github#325) - Bundled
node-ptyinto the CLI package -- we're one step closer to implementing github#16 - Fixed an issue where local tool calling broke sessions (fixes github#365, github#364, github#366)
- Added our LICENSE.md to our Node package (fixes github#371)
- Added debug logging to authentication status changes to get to the bottom of github#346
- Fixed more bugs where incorrect PRU consumption stats were displayed on the frontend For more information, see github#351 (comment)
- Fixed a bug where pasted input content that was backspaced away was still sent to the model
- Improved line wrapping and alignment when rendering file diffs
- Fixed a bug where model sourced from configuration file was not accounted for correctly in estimating premium request usage For more information, see github#351 (comment)
- Fixed a bug where premium requests were being overcounted for some users (github#351). If you were affected, we are working on refunding your overcharged premium requests!
- Enabled GitHub MCP server in prompt mode
- Added support to the bash tool for executing detached processes
- Added list of supported models as part of
copilot help configtext - Fixed session abort handling to properly clean up orphaned tool call when pressing Esc or force-quitting
- Enforced minimum Node version requirement at launch
- Simplified messaging for
/terminal-setup
-
Added new model: Run slash model to equip Haiku 4.5. - Added a flag to augment MCP server configuration to temporarily add or override server configuration per session:
--additional-mcp-config(fixes github#288)- You can pass MCP server configuration in two ways:
- Inline JSON:
copilot --additional-mcp-config '{"mcpServers": {"my-tool": {...}}}' - From a file (prefix with @):
copilot --additional-mcp-config @/path/to/config.json
- Inline JSON:
- You can also pass the flag multiple times (later values override earlier ones):
copilot --additional-mcp-config @base.json --additional-mcp-config @overrides.json
- You can pass MCP server configuration in two ways:
- Improved our prompts to ensure the agent uses Windows-style paths on Windows (fixes github#261)
- Added a prompt for users to run
/terminal-setupif needed to enable multi-line input - Various visual improvements:
- Added a shimmer effect to the "Thinking..." indicator
- Removed the box around user messages in the timeline
- Increased the contrast of removed intraline highlights in diffs
- Allow cycling through slash commands (from the bottom of the list back to the top)
- Aligned permission/confirmation prompts to ensure all use the same visual style
- Overhauled our session logging format:
- Introduced a new session logging format that decouples how we store sessions from how we display them in the timeline. The new format is cleaner, more concise, and scalable, and will allow us to more easily implement new features down the line.
- New sessions are stored in
~/.copilot/session-state - Legacy sessions are stored in
~/.copilot/history-session-state-- these will be migrated to the new format & location as you resume them fromcopilot --resume
- Enabled the Kitty protocol by default. Multi-line input is now supported via Shift+Ctrl on terminal that support the Kitty protocol. Multi-line input is also supported in VSCode and its forks by running the
/terminal-setupcommand (fixes github#14) - Enabled non-interactive GHE logins by respecting the
GH_HOSTenvironment variable for PAT andghauthentication modes (fixes github#296) - Improved debug log collection convenience by adding a persistent
log_leveloption in~/.copilot/config. Possible values:["none", "error", "warning", "info", "debug", "all", "default"] - Added debug logging when calls to
/modelresult in Copilot API errors. This should help us diagnose some policy/model access edge cases like github#268 and github#116 - Added
gradlewto the list of commands whose subcommands can be whitelisted (fixes github#217 (comment)) - Fixed a bug where sessions could enter a stuck state after a failed MCP tool call (fixes github#312)
- Made the output of
--helptext more concise
- Added
/terminal-setupcommand to set up multi-line input on terminals not implementing the kitty protocol - Fixed a bug where rejecting an MCP tool call would reject all future tool calls (fixes github#290)
- Fixed a regression where calling
/modelwith an argument did not work properly - Added each model's premium request multiplier to the
/modellist (currently, all our supported models are 1x)
-
Removed the "Windows support is experimental" warning -- we've made some big strides in improving Windows support the last two weeks! Please continue to report any issues/feedback
-
Improved debugging by including the Copilot API request ID for model calls errors and stack traces for client errors
-
Fixed an issue where consecutive orphaned tool calls led to a "Each
tool_useblock must have a correspondingtool_resultblock in the next message" message (fixes github#102) -
Added a prompt to approve new paths in
-pmode. Also added--allow-all-pathsargument that approves access to all paths. -
Changed parsing of environment variables in MCP server configuration to treat the value of the
envsection as literal values (fixes github#26). Customers who have configured MCP Servers for use with the CLI will need to make a slight modification to their~/.copilot/mcp-config.json. For any servers they have added with anenvsection, they will need to go add a$to the start of the "value" pair of the key value pair of each entry in the env-block, so to have the values treated as references to environment variables.For example: Before:
{ "env": { "GITHUB_ACCESS_TOKEN": "GITHUB_TOKEN" } }Before this change, the CLI would read the value of
GITHUB_TOKENfrom the environment of the CLI and set the environment variable namedGITHUB_ACCESS_TOKENin the MCP process to that value. With this change,GITHUB_ACCESS_TOKENwould now be set to the literal valueGITHUB_TOKEN. To get the old behavior, change to this:{ "env": { "GITHUB_ACCESS_TOKEN": "${GITHUB_TOKEN}" } }
- Improved argument input to MCP servers in
/mcp add-- previously, users had to use comma-separated syntax to specify arguments. Now, the "Command" field allows users to input the full command to start the server as if they were running it in a shell - Fixed a bug when using the Kitty protocol that led to text containing
uto not paste correctly. Kitty protocol support is still behind theCOPILOT_KITTYenvironment variable. (Fixes github#259) - Fixed a bug when using the Kitty protocol that led to the process hanging in VSCode terminal on Windows. Kitty protocol support is still behind the
COPILOT_KITTYenvironment variable. (Fixes github#257) - Improved the error handling in the
/modelpicker when no models are available (fixes github#229)
- Moved Kitty protocol support behind the
COPILOT_KITTYenvironment variable due to observed regressions (github#257, github#259) - Fixed a wrapping issue in multi-line prompts with empty lines
- Added validation for MCP server names (fixes github#110)
- Added support for Ctrl+B and Ctrl+F for moving cursor back and forward (fixes github#214)
- Added support for multi-line input for terminals that support the Kitty protocol (partially fixes github#14 -- broader terminal support coming soon!)
- Updated the OAuth login UI to begin polling as soon as the device code is generated (this will more solidly fix SSH edge-cases as described in github#89)
- Enabled proxy support via HTTPS_PROXY/HTTP_PROXY environment variables regardless of Node version (Fixes github#41)
- Significantly reduced token consumption, round trips per problem, and time to result. We'll share more specific data in our weekly changelog on Friday!
- Improved file write performances (especially on Windows) by not relying on the shell to fetch the current working directory
- Fixed a bug where
/cleardid not properly reset the context truncation tracking state - Hid the "Welcome to GitHub Copilot CLI" welcome message on session resumption and
/clearfor a cleaner look - Improved the alignment of tables where the scrollbar is present
- Improved the output of
--helpby making it more concise - Added a prompt for users who launch with
--screen-readerto persistently save this preference - Potentially improved flickering in some cases; we're still working on this!
- Improved visibility into file edits by showing file diffs in the timeline by default, without the need to Ctrl+R
- Improved slash command input by showing argument hints in the input box
- Improved the display of the interface in windows less than 80 columns wide
- Reduced the number of colors and improved the spacing of Markdown rendering
- Added a warning when attempting to use proxy support in an environment where it won't work (Node <24, required environment variables not set) (A more permanent fix for github#41 is coming ~tomorrow)
- Updated the context truncation message's color from an error color to a warning color
- Fixed a bug where
copilotlogs might not have been properly created on Windows - Fixed a bug where Powershell users with custom profiles might have had issues running commands (Fixes github#196)
- Fixed a bug where prompts were truncated after pasting and other edge cases (Fixes github#208, github#218)
- Fixed a bug where users would see a login prompt on startup despite being logged in (fixes github#202)
- Fixed a bug where some SSH users in certain environments were unable to get the OAuth login link and had their processes hang trying to open a browser (fixes github#89)
- Improved the experience of pasting large content: when pasting more than 10 lines, it's displayed as a compact token like
[Paste #1 - 15 lines]instead of flooding the terminal. - Added a warning when conversation context approaches ≤20% remaining of the model's limit that truncation will soon occur. At this point, we recommend you begin a new session (improves github#29)
- Removed the on-exit usage stats from the persisted session history
- Added the current version to startup logs to aid in bug reporting
- Removed cycling through TAB autocomplete items if an argument is present. This prevents running
/cwd /path/to/whatever, hittingTAB, then seeing/clearautocomplete
- Added image support!
@-mention files to add them as input to the model. - Improved proxy support for users on Node.JS v24+. See this comment for more details (Fixes github#41)
- Added support for directly executing shell commands and bypassing the model by prepending input with
!(fixes github#186, github#12) - Added
/usageslash command to provide stats about Premium request usage, session time, code changes, and per-model token use. This information is also printed at the conclusion of a session (Fixes github#27, github#121) - Improved
--screen-readermode by replacing icons in the timeline with informative labels - Added a
--continueflag to resume the most recently closed session - Updated the
/clearcommand to properly clear old timeline entries/session information (Fixes github#170)
- Switched to using per-subscription Copilot API endpoints in accordance with GitHub's docs (fixes github#76)
- Fixed a bug where
/user [list | show | switch]did not include users signed in from all authentication modes (fixes github#58) - Fixed a bug where switching to another user with
/user switchdid not take effect in the GitHub MCP server - Improved the screenreader experience by disabling the scrollbar in the
@file picker, the--resumesession picker, and the/command picker - Improved the polish of the scrollbar container (increased the width, reduced the opacity of the gutter)
- Minor visual improvements to the input area (moved the current model indicator to the right so it's not cramped with the CWD, improved the positioning of the file picker's "indexing" indicator, improved hint formatting in completion menus)
- Improved Markdown legibility by excluding
#prefixes in headings - Improved how we extract paths from shell commands for permission handling (might fix github#159, github#67)
- Improved the information density of file read/edit timeline events
- Fixed an inaccuracy in the
--bannerhelp text; it previously implied that it would persistently change the configuration to always show the startup banner - Improved the
/models list to ensure that a user only sees models they have access to use -- previously, if a user tries to use a model they do not have access to (because of their Copilot plan, their geographic region, etc), they received amodel_not_supportederror. This should prevent that by not even showing such models as options in the list (Fixes github#112, github#85, github#40) - Fixed a bug where pressing down arrow in a multi-line prompt would wrap around to the first line (This is on the way to implementing github#14)
- Added a scrollbar to the
@file mentioning picker and increased the size of the active buffer to 10 items - Improved the experience of writing prompts while the agent is running -- up/down arrows will now correctly navigate between options in the
@and/menus
- Changed the default model back to Sonnet 4 since Sonnet 4.5 hasn't rolled out to all users yet. Sonnet 4.5 is still available from the
/modelslash command
- Added support for Claude Sonnet 4.5 and made it the default model
- Added
/modelslash command to easily change the model (fixes github#10)/modelwill open a picker to change the model/model <model>will set the model to the parameter provided
- Added display of currently selected model above the input text box (Addresses feedback in github#120, github#108, )
- Improved error messages when users provide incorrect command-line arguments. (Addresses feedback of the discoverability of non-interactive mode from github#96)
- Changed the behavior of
Ctrl+rto expand only recent timeline items. After runningCtrl+r, you can useCtrl+eto expand all - Improved word motion logic to better detect newlines: using word motion keys will now correctly move to the first word on a line
- Improved the handling of multi-line inputs in the input box: the input text box is scrollable, limited to 10 lines. Long prompts won't take up the whole screen anymore! (This is on the way to implementing github#14)
- Removed the left and right borders from the input box. This makes it easier to copy text out of it!
- Added glob matching to shell rules. When using
--allow-tooland--deny-tool, you can now specify things likeshell(npm run test:*)to match any shell commands beginning withnpm run test - Improved the
copilot --resumeinterface with relative time display, session message count, (Fixes github#97)
- Improved error message received when Copilot CLI is blocked by organization policy (fixes github#18 )
- Improved the error message received when using a PAT that is missing the "Copilot Requests" permission (fixes github#46 )
- Improved the output of
/user listto make it clearer which is the current user - Improved PowerShell parsing of
ForEach-Objectand detection of command name expressions (e.g.,& $someCommand)