Skip to content

Commit 823bcdb

Browse files
authored
Merge branch 'github:main' into main
2 parents 209b2b4 + ab1336d commit 823bcdb

2 files changed

Lines changed: 238 additions & 9 deletions

File tree

changelog.md

Lines changed: 211 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,214 @@
1+
## 1.0.11 - 2026-03-23
2+
3+
- Ensure models appear in picker correctly, display model names where possible
4+
- Show a warning when MCP servers are blocked by policy (e.g. allowlist enforcement)
5+
- Organization policy for third-party MCP servers is now enforced for all users
6+
- Add ~/.agents/skills/ as a personal skill discovery directory, aligning with VS Code's GHCP4A extension default
7+
- Extension hooks from multiple extensions now merge instead of overwriting each other or hooks from hooks.json
8+
- sessionStart hook additionalContext is now injected into the conversation
9+
- /clear now abandons the current session entirely, while /new starts a fresh conversation (keeping the old session backgrounded)
10+
- GitHub MCP server user configuration is respected when connecting to remote hosts
11+
- Terminal screen redraws correctly after process suspend and resume (Ctrl+Z / fg)
12+
- MCP OAuth authentication works with MCP servers like the Atlassian Rovo MCP Server which support Dynamic Client Registration but host authorization metadata at a non-standard URL
13+
- /cd keeps a separate working directory per session, restored when switching sessions
14+
- Custom instructions, MCP servers, skills, and agents are now discovered at every directory level from the working directory up to the git root, enabling full monorepo support
15+
- Startup 'Environment loaded' message now shows the number of loaded hooks
16+
- Background agent progress (current intent and tool calls completed) now surfaces in read_agent and task timeout responses
17+
- statusLine.command path now supports ~ and environment variables (e.g. $HOME, ${VAR:-default})
18+
- /new and /clear commands accept an optional prompt to start the new session with a first message
19+
20+
## 1.0.10 - 2026-03-20
21+
22+
- Reduced memory usage when viewing large files in their entirety
23+
- /login device flow works correctly in Codespaces and remote terminal environments
24+
- Working directory is correctly detected when using --server mode with remote sessions
25+
- Arrow keys work correctly in terminals using application keypad mode
26+
- Repo hooks (.github/hooks/) now fire correctly when using prompt mode (-p flag)
27+
- /copy writes formatted HTML to clipboard on Windows for pasting into Word, Outlook, and Teams
28+
- SDK clients can register custom slash commands when starting or joining a session
29+
- SDK clients can show elicitation dialogs to the user via session.ui.elicitation
30+
- Add experimental support for multiple concurrent sessions
31+
- Add --effort as a shorthand alias for --reasoning-effort
32+
- Add /undo command to undo the last turn and revert file changes
33+
- Markdown bullet lists render correctly in alt-screen mode when content contains hard line breaks
34+
- Elicitation form shows Shift+Tab hint for navigating between fields in reverse
35+
- Remote session URL displays as a compact clickable 'Open in browser' link instead of a duplicated raw URL
36+
- Session history is no longer lost when exiting via /quit, Ctrl+C, or restart
37+
- Hook matcher filters defined in nested hook structures are now correctly applied to inner hook items
38+
- Plugins using .claude-plugin/ or .plugin/ manifest directories now load their MCP and LSP servers correctly
39+
- /terminal-setup no longer shows a misleading error for WSL users
40+
- Model picker reorganizes models into Available, Blocked/Disabled, and Upgrade tabs based on user plan and policy
41+
- Workspace MCP servers from .mcp.json, .vscode/mcp.json, and devcontainer.json are now loaded only after folder trust is confirmed
42+
- Config settings renamed to camelCase: `includeCoAuthoredBy`, `effortLevel`, `autoUpdatesChannel`, `statusLine` (old names still work)
43+
- When copying assistant responses, the leading 2-space UI indent is stripped from selections where all selected lines share that indent
44+
- Plugins loaded via --plugin-dir now appear in /plugin list under a separate 'External Plugins' section
45+
46+
## 1.0.9 - 2026-03-19
47+
48+
- Spurious I/O error messages (ENOTCONN, EIO) no longer appear in the timeline during SSH disconnects or terminal closes
49+
- Add include_gitignored config option to include gitignored files in @ file search
50+
- Copying text on WSL correctly preserves CJK and other non-ASCII characters
51+
- Marketplace and plugin installs from shortened URLs (e.g., aka.ms links) now work correctly
52+
53+
## 1.0.8 - 2026-03-18
54+
55+
- Agent mode labels and borders display correct colors on non-truecolor terminals (tmux, SSH, screen)
56+
- Alternate screen buffer is now enabled by default for a cleaner terminal experience
57+
- Exit plan mode tool remains available when an extension subprocess joins an active session
58+
- Repo-level hooks are loaded only after folder trust is confirmed, not before the trust dialog is shown
59+
- Idle subagents no longer clutter the /tasks view — they are hidden after 2 minutes of inactivity
60+
- Add extension mode setting to control extensibility
61+
- MCP servers can be validated against configured registries using the experimental MCP_ALLOWLIST feature flag
62+
- Allow --resume to accept a task ID in addition to a session ID
63+
- Support defining hooks in settings.json, settings.local.json, and config.json
64+
- Scroll works correctly in macOS Terminal.app and other terminals that don't support SGR mouse encoding
65+
- Mouse scroll works correctly in tmux after returning from an external editor
66+
- Ctrl-C in prompt mode now exits immediately instead of waiting for the request to complete
67+
- Spinner animation no longer delays visible output from appearing in the timeline
68+
- Dialog titles display consistently inside all dialog boxes
69+
70+
## 1.0.7 - 2026-03-17
71+
72+
- Improve color contrast across CLI themes for better readability and accessibility
73+
- User messages display with a subtle background color for visual differentiation from assistant messages
74+
- Add support for gpt-5.4-mini model
75+
- Tab bar selected tab uses compact [label] style with cleaner spacing
76+
- Add "customize" mode to system message config for section-level system prompt overrides
77+
- Double-Esc clears input when text is present, or triggers undo when the prompt is empty, with a hint shown after the first Esc
78+
- Session resume no longer fails with 'Session file is corrupted' for sessions created before 1.0.6
79+
- Branch indicator distinguishes unstaged changes (\*), staged changes (+), and untracked files (%) in the header
80+
- Add experimental SDK session APIs to list and manage skills, MCP servers, and plugins, with optional config auto-discovery from the working directory
81+
- Add subagentStart hook that fires when a subagent is spawned, with support for injecting additional context into the subagent's prompt
82+
- Pro and trial users now see all models they are entitled to in the model picker
83+
- CLI restart no longer re-sends the -i/--interactive prompt to the new session
84+
- Resolve an edge case where auto-update could leave an incomplete package on Windows
85+
86+
## 1.0.6 - 2026-03-16
87+
88+
- Autopilot continuation no longer gets permanently blocked after an error in a previous turn
89+
- In autopilot, task_complete summary is now required and renders as markdown
90+
- Input placeholder text is no longer read aloud by screen readers on every prompt submission
91+
- Free tree-sitter WASM objects after shell command parsing to prevent memory leak
92+
- /help dialog starts scrolled to the top in alt-screen mode
93+
- Auto-update correctly recovers from race conditions on Windows
94+
- CLI no longer fails to load on Windows after updating while another instance is running
95+
- Reduce memory usage by eliminating redundant environment variable copies per child process spawn
96+
- Remaining requests widget no longer shows inaccurate quota data for Copilot Free users
97+
- Resolve session crashes caused by HTTP/2 connection pool race conditions when sub-agents are active
98+
- CLI loads the latest version of itself after an auto-update
99+
- Kill command validation no longer incorrectly blocks some legitimate commands. e.g. p.kill() in a python script
100+
- Instruction file frontmatter applyTo field accepts both string and array values
101+
- Improve streaming and tool-output memory usage
102+
- Model can discover and use tools dynamically with tool search for Claude models
103+
- Hooks fire correctly when resuming a previous session
104+
- Prompt input in alt screen mode renders all lines without truncation
105+
- Links and right-click paste no longer trigger twice when running in VS Code's integrated terminal
106+
- Hook configuration files now work across VS Code, Claude Code, and the CLI without modification by accepting PascalCase event names alongside camelCase
107+
- Native module prebuilds (e.g., conpty.node on Windows ARM64) load reliably on first launch
108+
- Subagent elapsed time in /tasks view freezes when idle and resumes when active again
109+
- Flags --enable-all-github-mcp-tools, --add-github-mcp-toolset, and --add-github-mcp-tool now take effect when using the SDK (ACP mode)
110+
- Custom instruction file paths load correctly when using COPILOT_CUSTOM_INSTRUCTIONS_DIRS
111+
- Command output is no longer lost when a command causes the shell to exit
112+
- Plugins using .claude-plugin/plugin.json are discovered when loaded via --plugin-dir
113+
- Fix handling of shift+enter on VS Code with old /terminal-setup config.
114+
- Agent creation wizard shows the correct user agents directory path
115+
- Support Open Plugin spec file locations for loading plugin and marketplace manifests
116+
- Show friendlier error messages and provide keyboard shortcut to open event links in browsers
117+
- Extension tools now work with the permissions system, use `skipPermission` per-tool to bypass permission prompts
118+
- Hook config files now support Claude Code's nested matcher/hooks structure and optional type field
119+
- Sub-agents launched by the task tool are assigned human-readable IDs based on their name (e.g., `math-helper-0`) instead of generic `agent-0` identifiers
120+
- The create_pull_request tool now includes the PR URL in its output so the agent can share the direct link
121+
- read_agent output includes inbound messages that triggered each turn in multi-turn agents
122+
- Improve compatibility with the Open Plugins spec: support `.lsp.json`, PascalCase hook event names, `exclusive` path mode, and `:` namespace separator
123+
124+
## 1.0.5 - 2026-03-13
125+
126+
- Terminal title resets to default after running /clear or /new
127+
- Add /extensions command to view, enable, and disable CLI extensions
128+
- @ file mentions now support paths outside the project: absolute paths (@/usr/...), home directory (@~/...), and relative parent paths (@../...)
129+
- Toggling experimental mode with /experimental on|off automatically restarts the CLI to apply changes immediately
130+
- Right-click paste goes to the active dialog input instead of the main conversation input
131+
- Introducing /pr to help create and view PRs, automatically fix CI failures, address review feedback, and resolve merge conflicts
132+
- Block network (UNC) paths to prevent credential leakage via SMB authentication
133+
- Send follow-up messages to background agents with the write_agent tool for multi-turn conversations
134+
- Memory storage errors now indicate when repository doesn't exist or you lack write access
135+
- Show a clear error when a classic Personal Access Token (ghp\_) is set in environment variables instead of silently exiting
136+
- Diff view displays correctly on Windows instead of showing corrupted/overwritten text
137+
- Fix Kitty keyboard protocol escape sequences appearing at shutdown
138+
- Setting claude-sonnet-4.6 as the default model is now preserved correctly
139+
- Plugin uninstall reliably removes files using the stored install path
140+
- Add /version command to display CLI version and check for updates from within the session
141+
- Add experimental embedding-based dynamic retrieval of MCP and skill instructions per turn
142+
- Syntax highlighting in /diff with support for 17 programming languages
143+
- Add preCompact hook to run commands before context compaction starts
144+
- Request ID from the API now appears in the timeline when errors occur after retries are exhausted
145+
- PR descriptions with backtick-formatted code render correctly on Windows/PowerShell
146+
- Show a helpful error message when a file path is passed as a CLI command
147+
- Session reports an authentication error instead of hanging when the token is invalid or expired
148+
- View tool shows partial content for large single-line files (e.g. minified JS, large JSON blobs) instead of empty output
149+
- /changelog supports `last <N>`, `since <version>`, and `summarize` to browse and summarize multiple release notes at once
150+
- Hooks config files that omit the version field are now accepted by the CLI
151+
152+
## 1.0.4 - 2026-03-11
153+
154+
- Add `session.shell.exec` and `session.shell.kill` RPC methods for executing shell commands with streaming stdout/stderr output
155+
- Custom agents from --plugin-dir plugins now load correctly in ACP mode
156+
- Adaptive color engine with dynamic color modes and interactive theme picker. Gracefully degrades on limited-color terminals and Windows
157+
- MCP OAuth re-authentication works reliably when callback port changes or when using Microsoft Entra ID
158+
- Replace /pr open with /pr view [local|web] to view PR status locally or open in browser
159+
- Enables OpenTelemetry instrumentation for observability into agent sessions, LLM calls, and tool executions
160+
- Extensions can now be written as CommonJS modules (extension.cjs)
161+
- Show loaded extensions count in the Environment loaded startup message
162+
- Support disableAllHooks flag to disable all hooks from a configuration file
163+
- Support Azure DevOps repository identification in session logs
164+
- Session export header renders each field on its own line in shared gists
165+
- Auto-update now retries without authentication token on SAML enforcement errors
166+
- Autopilot mode stops continuing after API errors instead of looping indefinitely
167+
- Status line context window percentage no longer inflates across turns by using the last call's input and output tokens instead of cumulative totals
168+
- Kitty keyboard protocol is properly disabled on suspend when using alternate screen
169+
- Only show reasoning headers when it's the only reasoning text available.
170+
- Terminal properly resets when CLI crashes, preventing shell corruption
171+
- /update command automatically restarts to apply updates instead of requiring manual exit
172+
- OAuth authentication now handles Microsoft Entra ID and other OIDC servers reliably with proper resource indicators and refresh token support
173+
- Show individual instruction file names in /instructions picker with [external] labels for injected files
174+
- Path permission dialog offers a one-time approval option in addition to adding the path to the allowed list
175+
- Add --reasoning-effort CLI flag to set reasoning effort level
176+
- Hooks can now request user confirmation before tool execution with 'ask' permission decision
177+
- Add configure-copilot sub-agent for managing MCP servers, custom agents, and skills via the task tool
178+
- Interactive shell initialization no longer times out on slow machines
179+
- Faster shell commands on Windows by skipping PowerShell profile loading
180+
- Improve CLI help documentation to use standard --option=value format and comma-separated list syntax
181+
182+
## 1.0.3 - 2026-03-09
183+
184+
- Enable alternate screen buffer by default for staff users
185+
- Extensions are now available as an experimental feature — ask Copilot to write custom tools and hooks for itself using @github/copilot-sdk
186+
- Document GH_HOST, HTTP_PROXY, HTTPS_PROXY, NO_COLOR, and NO_PROXY environment variables in help
187+
- Read MCP server configuration from .devcontainer/devcontainer.json
188+
- Add --binary-version flag to query the CLI binary version without launching
189+
- Add /restart command to hot restart the CLI while preserving your session
190+
- Background task notifications display in timeline with expandable detail
191+
- Type 'quit' to exit the CLI, in addition to 'exit'
192+
- Add extraKnownMarketplaces repository setting to replace marketplaces
193+
- Add Windows Terminal support to /terminal-setup command
194+
- /reset-allowed-tools now fully undoes /allow-all and re-triggers the autopilot permission dialog
195+
- Improved handling of batched queries in the SQL tool
196+
- Login flow no longer hangs on Ubuntu when system keyring is unresponsive
197+
- Terminal is properly reset when CLI crashes unexpectedly
198+
- Table disables borders in screen reader mode to prevent announcing decorative characters
199+
- MCP servers with non-conforming outputSchema are now accessible
200+
- /plugin update now works for GitHub-installed plugins
201+
- /add-dir directories persist across session changes like /clear and /resume
202+
- Prevent env command from being treated as safe to allow without approval
203+
- Placeholder text color displays correctly when wrapping in narrow terminals
204+
- /plugin update now works with marketplaces defined in project settings
205+
- Retry status messages now display to show progress during server error recovery
206+
- Show loading spinner in diff mode while fetching changes
207+
- Suppress /init suggestion when .github/instructions/ contains instructions
208+
- Rename merge_strategy config to mergeStrategy for consistency
209+
- Suppress unknown field warnings in skill and command frontmatter
210+
- Trust safe sed commands to run without confirmation
211+
1212
## 1.0.2 - 2026-03-06
2213

3214
To commemorate GitHub Copilot CLI reaching general availability last week, we're incrementing the major version to 1.0!

install.sh

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,16 @@ case "$(uname -m)" in
3434
*) echo "Error: Unsupported architecture $(uname -m)" >&2 ; exit 1 ;;
3535
esac
3636

37+
# Set up authentication for GitHub requests if GITHUB_TOKEN is available
38+
CURL_AUTH=()
39+
WGET_AUTH=()
40+
GIT_REMOTE="https://github.com/github/copilot-cli"
41+
if [ -n "$GITHUB_TOKEN" ]; then
42+
CURL_AUTH=(-H "Authorization: token $GITHUB_TOKEN")
43+
WGET_AUTH=(--header="Authorization: token $GITHUB_TOKEN")
44+
GIT_REMOTE="https://x-access-token:${GITHUB_TOKEN}@github.com/github/copilot-cli"
45+
fi
46+
3747
# Determine download URL based on VERSION
3848
if [ "${VERSION}" = "latest" ] || [ -z "$VERSION" ]; then
3949
DOWNLOAD_URL="https://github.com/github/copilot-cli/releases/latest/download/copilot-${PLATFORM}-${ARCH}.tar.gz"
@@ -44,7 +54,7 @@ elif [ "${VERSION}" = "prerelease" ]; then
4454
echo "Error: git is required to install prerelease versions" >&2
4555
exit 1
4656
fi
47-
VERSION="$(git ls-remote --tags https://github.com/github/copilot-cli | tail -1 | awk -F/ '{print $NF}')"
57+
VERSION="$(git ls-remote --tags "$GIT_REMOTE" | tail -1 | awk -F/ '{print $NF}')"
4858
if [ -z "$VERSION" ]; then
4959
echo "Error: Could not determine prerelease version" >&2
5060
exit 1
@@ -67,9 +77,9 @@ echo "Downloading from: $DOWNLOAD_URL"
6777
TMP_DIR="$(mktemp -d)"
6878
TMP_TARBALL="$TMP_DIR/copilot-${PLATFORM}-${ARCH}.tar.gz"
6979
if command -v curl >/dev/null 2>&1; then
70-
curl -fsSL "$DOWNLOAD_URL" -o "$TMP_TARBALL"
80+
curl -fsSL "${CURL_AUTH[@]}" "$DOWNLOAD_URL" -o "$TMP_TARBALL"
7181
elif command -v wget >/dev/null 2>&1; then
72-
wget -qO "$TMP_TARBALL" "$DOWNLOAD_URL"
82+
wget -qO "$TMP_TARBALL" "${WGET_AUTH[@]}" "$DOWNLOAD_URL"
7383
else
7484
echo "Error: Neither curl nor wget found. Please install one of them."
7585
rm -rf "$TMP_DIR"
@@ -80,9 +90,9 @@ fi
8090
TMP_CHECKSUMS="$TMP_DIR/SHA256SUMS.txt"
8191
CHECKSUMS_AVAILABLE=false
8292
if command -v curl >/dev/null 2>&1; then
83-
curl -fsSL "$CHECKSUMS_URL" -o "$TMP_CHECKSUMS" 2>/dev/null && CHECKSUMS_AVAILABLE=true
93+
curl -fsSL "${CURL_AUTH[@]}" "$CHECKSUMS_URL" -o "$TMP_CHECKSUMS" 2>/dev/null && CHECKSUMS_AVAILABLE=true
8494
elif command -v wget >/dev/null 2>&1; then
85-
wget -qO "$TMP_CHECKSUMS" "$CHECKSUMS_URL" 2>/dev/null && CHECKSUMS_AVAILABLE=true
95+
wget -qO "$TMP_CHECKSUMS" "${WGET_AUTH[@]}" "$CHECKSUMS_URL" 2>/dev/null && CHECKSUMS_AVAILABLE=true
8696
fi
8797

8898
if [ "$CHECKSUMS_AVAILABLE" = true ]; then
@@ -141,11 +151,19 @@ if ! command -v copilot >/dev/null 2>&1; then
141151
echo ""
142152
echo "Notice: $INSTALL_DIR is not in your PATH"
143153

144-
# Detect shell rc file
154+
# Detect shell profile file for PATH
145155
case "$(basename "${SHELL:-/bin/sh}")" in
146-
zsh) RC_FILE="$HOME/.zshrc" ;;
147-
bash) RC_FILE="$HOME/.bashrc" ;;
148-
*) RC_FILE="$HOME/.profile" ;;
156+
zsh) RC_FILE="${ZDOTDIR:-$HOME}/.zprofile" ;;
157+
bash)
158+
if [ -f "$HOME/.bash_profile" ]; then
159+
RC_FILE="$HOME/.bash_profile"
160+
elif [ -f "$HOME/.bash_login" ]; then
161+
RC_FILE="$HOME/.bash_login"
162+
else
163+
RC_FILE="$HOME/.profile"
164+
fi
165+
;;
166+
*) RC_FILE="$HOME/.profile" ;;
149167
esac
150168

151169
# Prompt user to add to shell rc file (only if interactive)

0 commit comments

Comments
 (0)