diff --git a/content/copilot/concepts/billing/usage-based-billing-for-individuals.md b/content/copilot/concepts/billing/usage-based-billing-for-individuals.md index 614275a837e1..ce0649c52143 100644 --- a/content/copilot/concepts/billing/usage-based-billing-for-individuals.md +++ b/content/copilot/concepts/billing/usage-based-billing-for-individuals.md @@ -75,7 +75,7 @@ You will have the option to: * Cancel your plan and receive a prorated refund. * Wait to be downgraded to {% data variables.copilot.copilot_free_short %} at renewal time. -Note that, starting **June 1, 2026**, {% data variables.copilot.copilot_pro_short %} and {% data variables.copilot.copilot_pro_plus_short %} subscribers on annual billing plans will experience changes to model multipliers. See [AUTOTITLE](/copilot/reference/copilot-billing/models-and-pricing#model-multipliers-for-annual-copilot-pro-and-copilot-pro-subscribers). +Note that, starting **June 1, 2026**, {% data variables.copilot.copilot_pro_short %} and {% data variables.copilot.copilot_pro_plus_short %} subscribers on **existing annual billing plans** will experience changes to model multipliers. See [AUTOTITLE](/copilot/reference/copilot-billing/models-and-pricing#model-multipliers-for-annual-copilot-pro-and-copilot-pro-subscribers). ## Next steps diff --git a/content/copilot/how-tos/copilot-cli/set-up-copilot-cli/authenticate-copilot-cli.md b/content/copilot/how-tos/copilot-cli/set-up-copilot-cli/authenticate-copilot-cli.md index c290e49374ed..35b3b19c223a 100644 --- a/content/copilot/how-tos/copilot-cli/set-up-copilot-cli/authenticate-copilot-cli.md +++ b/content/copilot/how-tos/copilot-cli/set-up-copilot-cli/authenticate-copilot-cli.md @@ -67,7 +67,7 @@ By default, the CLI stores your OAuth token in your operating system's keychain | Windows | Credential Manager | | Linux | libsecret (GNOME Keyring, KWallet) | -If the system keychain is unavailable—for example, on a headless Linux server without `libsecret` installed—the CLI prompts you to store the token in a plaintext configuration file at `~/.copilot/settings.json`. +If the system keychain is unavailable—for example, on a headless Linux server without `libsecret` installed—the CLI prompts you to store the token in a plaintext configuration file at `~/.copilot/config.json`. When you run a command, {% data variables.copilot.copilot_cli_short %} checks for credentials in the following order: @@ -176,8 +176,8 @@ If you have {% data variables.product.prodname_cli %} installed and authenticate ## Switching between accounts -{% data variables.copilot.copilot_cli_short %} supports multiple accounts. You can list available accounts and switch between them from within the CLI. -To list available accounts, run `/user list` from the {% data variables.copilot.copilot_cli_short %} prompt. +{% data variables.copilot.copilot_cli_short %} supports multiple accounts. You can list available accounts and switch between them from within the CLI. +To list available accounts, run `/user list` from the {% data variables.copilot.copilot_cli_short %} prompt. To switch to a different account, type `/user switch` on the prompt. To add another account, run `copilot login` from a new terminal session, or run the login command from within the CLI and authorize with the other account. @@ -190,7 +190,7 @@ To revoke the OAuth app authorization on {% data variables.product.github %} and 1. Navigate to **Settings** > **Applications** > **Authorized OAuth Apps**. 1. Navigate to your settings page: - 1. In the upper-right corner of any page on {% data variables.product.prodname_dotcom %}, click your profile picture. + 1. In the upper-right corner of any page on {% data variables.product.prodname_dotcom %}, click your profile picture. 1. Click **Settings**. 1. In the left sidebar, click **Applications**. 1. Under **Authorized OAuth Apps**, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %} next to **GitHub CLI** to expand the menu and select **Revoke**. diff --git a/content/copilot/how-tos/copilot-cli/set-up-copilot-cli/configure-copilot-cli.md b/content/copilot/how-tos/copilot-cli/set-up-copilot-cli/configure-copilot-cli.md index 8157aced9470..a078f952ea12 100644 --- a/content/copilot/how-tos/copilot-cli/set-up-copilot-cli/configure-copilot-cli.md +++ b/content/copilot/how-tos/copilot-cli/set-up-copilot-cli/configure-copilot-cli.md @@ -39,16 +39,16 @@ If you choose to trust the directory for future sessions, the trusted directory ### Editing trusted directories -You can edit the list of permanently trusted directories. +You can edit the list of permanently trusted directories. Trusted directories are stored in the automatically managed `config.json` file. -1. Open the CLI’s `settings.json` file. By default, it’s stored in a `.copilot` folder under your home directory: +1. Open the CLI's `config.json` file. By default, it's stored in a `.copilot` folder under your home directory: - * **macOS/Linux**: `~/.copilot/settings.json` - * **Windows**: `$HOME\.copilot\settings.json` + * **macOS/Linux**: `~/.copilot/config.json` + * **Windows**: `$HOME\.copilot\config.json` - You can change the config location by setting the `COPILOT_HOME` environment variable. + You can change the config location by setting the `COPILOT_HOME` environment variable. This would change `~/.copilot/` and `$HOME\.copilot\` in the above paths. -1. Edit the contents of the `trusted_folders` array. +1. Edit the contents of the `trustedFolders` array. ## Setting allowed tools diff --git a/content/copilot/how-tos/copilot-cli/use-copilot-cli-agents/delegate-tasks-to-cca.md b/content/copilot/how-tos/copilot-cli/use-copilot-cli-agents/delegate-tasks-to-cca.md index 99b640c3ac79..4e80f732a4bc 100644 --- a/content/copilot/how-tos/copilot-cli/use-copilot-cli-agents/delegate-tasks-to-cca.md +++ b/content/copilot/how-tos/copilot-cli/use-copilot-cli-agents/delegate-tasks-to-cca.md @@ -1,7 +1,7 @@ --- -title: Delegating tasks to {% data variables.copilot.copilot_cli %} -shortTitle: Delegate tasks to Copilot -intro: Use {% data variables.copilot.copilot_cli_short %}''s autopilot mode to hand off tasks and have {% data variables.product.prodname_copilot_short %} work autonomously on your behalf. +title: Delegating tasks to {% data variables.product.prodname_copilot_short %} +shortTitle: Delegate tasks to {% data variables.product.prodname_copilot_short %} +intro: Use autopilot mode, or the `/delegate` slash command, to get {% data variables.product.prodname_copilot_short %} to work autonomously on your behalf. allowTitleToDifferFromFilename: true product: '{% data reusables.gated-features.copilot-cli %}' versions: @@ -13,9 +13,13 @@ docsTeamMetrics: - copilot-cli --- -## Get {% data variables.product.prodname_copilot_short %} to work autonomously +{% data variables.copilot.copilot_cli_short %} offers two ways to have {% data variables.product.prodname_copilot_short %} work autonomously: **autopilot mode** and the **`/delegate` command**. Both let you hand off tasks, but they differ in where the work happens: -You can tell {% data variables.product.prodname_copilot_short %} to use its best judgment to complete a task autonomously, rather than the CLI prompting you for input at each decision point within a task. You do this by using the CLI's autopilot mode. +* **Autopilot mode** runs locally in your CLI session. You give autopilot full permissions and {% data variables.product.prodname_copilot_short %} then works on a task without stopping to prompt you for input. Your local machine does the work, and you can watch progress in real time. Use autopilot when you want hands-free local execution. + +* **`/delegate`** pushes the task to {% data variables.copilot.copilot_cloud_agent %} on {% data variables.product.github %}. The work runs remotely: {% data variables.product.prodname_copilot_short %} creates a branch, opens a draft pull request, and works in the background. Use `/delegate` when you want to hand off a task entirely and continue running even if you shut down your local machine. + +## Get autopilot to complete tasks autonomously on your local machine There are two ways to use autopilot mode: @@ -26,9 +30,7 @@ For more information, see [AUTOTITLE](/copilot/concepts/agents/copilot-cli/autop ## Delegate tasks to {% data variables.copilot.copilot_cloud_agent %} -The delegate command lets you push your current session to {% data variables.copilot.copilot_cloud_agent %} on {% data variables.product.github %}. This lets you hand off work while preserving all the context {% data variables.product.prodname_copilot_short %} needs to complete your task. - -You can delegate a task using the slash command, followed by a prompt: +You can delegate a task to {% data variables.copilot.copilot_cloud_agent %} on {% data variables.product.github %} by using the `/delegate`slash command, followed by a prompt: ```shell /delegate complete the API integration tests and fix any failing edge cases diff --git a/content/copilot/reference/copilot-billing/models-and-pricing.md b/content/copilot/reference/copilot-billing/models-and-pricing.md index e65f33f47c48..a61d41adcb4b 100644 --- a/content/copilot/reference/copilot-billing/models-and-pricing.md +++ b/content/copilot/reference/copilot-billing/models-and-pricing.md @@ -57,8 +57,6 @@ Anthropic models include a cache write cost in addition to cached input. | {{ entry.model }} | {{ entry.release_status }} | {{ entry.category }} | {{ entry.input }} | {{ entry.cached_input }} | {{ entry.cache_write }} | {{ entry.output }} | | {% endif %}{% endfor %} | -[^4]: {% data variables.copilot.copilot_claude_opus_46_fast %} is billed at 6x standard {% data variables.copilot.copilot_claude_opus_46 %} rates. - ### Google | Model | Release status | Category | Input | Cached input | Output | @@ -114,7 +112,7 @@ You can view your current {% data variables.product.prodname_actions %} usage fo -Starting **June 1, 2026**, {% data variables.copilot.copilot_pro_short %} and {% data variables.copilot.copilot_pro_plus_short %} subscribers on annual billing plans will experience changes to model multipliers. The table below shows how the multipliers for each model will adjust. +Starting **June 1, 2026**, {% data variables.copilot.copilot_pro_short %} and {% data variables.copilot.copilot_pro_plus_short %} subscribers on **existing annual billing plans** will experience changes to model multipliers. The table below shows how the multipliers for each model will adjust. diff --git a/content/copilot/reference/copilot-cli-reference/cli-command-reference.md b/content/copilot/reference/copilot-cli-reference/cli-command-reference.md index 1253f71c5b22..1f36f6cbbed1 100644 --- a/content/copilot/reference/copilot-cli-reference/cli-command-reference.md +++ b/content/copilot/reference/copilot-cli-reference/cli-command-reference.md @@ -19,6 +19,7 @@ docsTeamMetrics: | Command | Purpose | |------------------------|----------------------------------------------------| | `copilot` | Launch the interactive user interface. | +| `copilot completion SHELL` | Print a shell script for the chosen shell that can be used to enable tab completion for {% data variables.copilot.copilot_cli_short %}. Supported shells: `bash`, `zsh`, `fish`. See [Using `copilot completion`](#using-copilot-completion). | | `copilot help [TOPIC]` | Display help information. Help topics include: `config`, `commands`, `environment`, `logging`, `monitoring`, `permissions`, and `providers`. | | `copilot init` | Initialize {% data variables.product.prodname_copilot_short %} custom instructions for this repository. | | `copilot login` | Authenticate with {% data variables.product.prodname_copilot_short %} via the OAuth device flow. Accepts `--host HOST` to specify the {% data variables.product.github %} host URL (default: `https://github.com`). | @@ -33,9 +34,8 @@ docsTeamMetrics: | Option | Purpose | |-------------------------|-----------------------------------------------------------------------------------------------| | `--host HOST` | {% data variables.product.github %} host URL (default: `https://github.com`). Use this to authenticate with a {% data variables.product.prodname_ghe_cloud %} instance that uses data residency (for example, `https://example.ghe.com`). | -| `--config-dir PATH` | Set the configuration directory (default: `~/.copilot`). | -The default authentication mode is a web-based browser flow. After completion, an authentication token is stored securely in the system credential store. If a credential store is not found, the token is stored in a plain text config file under `~/.copilot/`. +The default authentication mode is a web-based browser flow. After completion, an authentication token is stored securely in the system credential store. If a credential store is not found, the token is stored in a plain text config file under `~/.copilot/` (or the directory specified by `COPILOT_HOME` if set). Alternatively, {% data variables.copilot.copilot_cli_short %} will use an authentication token found in environment variables. The following are checked in order of precedence: `COPILOT_GITHUB_TOKEN`, `GH_TOKEN`, `GITHUB_TOKEN`. This method is most suitable for headless use such as automation. @@ -54,6 +54,38 @@ copilot login --host https://example.ghe.com COPILOT_GITHUB_TOKEN=github_pat_... copilot ``` +### Using `copilot completion` + +The command `copilot completion SHELL` outputs a script for the specified shell (bash, zsh, or fish). + +By sourcing this script (or writing it to your shell's completion directory) you can enable tab completion in your terminal for `copilot` subcommands, command options, and known value choices for command options. + +#### Usage examples + +Bash (current session only): + +```bash copy +source <(copilot completion bash) +``` + +Bash (persistent, Linux): + +```bash copy +copilot completion bash | sudo tee /etc/bash_completion.d/copilot +``` + +Zsh — write the output to a directory on your $fpath. Restart the shell after running this command: + +```shell copy +copilot completion zsh > "${fpath[1]}/_copilot" +``` + +Fish: + +```shell copy +copilot completion fish > ~/.config/fish/completions/copilot.fish +``` + ## Global shortcuts in the interactive interface | Shortcut | Purpose | @@ -182,7 +214,6 @@ For a complete list of available slash commands enter `/help` in the CLI's inter | `--available-tools=TOOL ...` | Only these tools will be available to the model. For multiple tools, use a quoted, comma-separated list. See [AUTOTITLE](/copilot/how-tos/copilot-cli/allowing-tools). | | `--banner`, `--no-banner` | Show or hide the startup banner. | | `--bash-env` | Enable `BASH_ENV` support for bash shells. | -| `--config-dir=PATH` | Set the configuration directory (default: `~/.copilot`). | | `--connect[=SESSION-ID]` | Connect directly to a remote session (optionally specify a session ID or task ID). Conflicts with `--resume` and `--continue`. | | `--continue` | Resume the most recent session in the current working directory, falling back to the globally most recent session. | | `--deny-tool=TOOL ...` | Tools the CLI does not have permission to use. Will not prompt for permission. For multiple tools, use a quoted, comma-separated list. | @@ -332,7 +363,7 @@ copilot --allow-tool='MyMCP' For detailed information about configuration file settings—including the full list of user settings, repository settings, local settings, and how they cascade—see [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-config-dir-reference#configuration-file-settings). > [!NOTE] -> User settings were previously stored in `~/.copilot/config.json`. Existing settings in that location are automatically migrated to `~/.copilot/settings.json` on startup. +> User settings were previously stored in `~/.copilot/config.json`. Existing user-editable settings in that location are automatically migrated to `~/.copilot/settings.json` on startup. ## Project initialization for {% data variables.product.prodname_copilot_short %} @@ -944,7 +975,6 @@ Use `copilot mcp` to manage MCP server configurations from the command line with | `--timeout ` | Timeout in milliseconds. | | `--json` | Output added configuration as JSON. | | `--show-secrets` | Show full environment variable and header values. | -| `--config-dir ` | Path to the configuration directory. | > [!CAUTION] > `--show-secrets` can print sensitive environment variable and header values to your terminal or logs. Only use this option in trusted environments, and avoid copying, pasting, or otherwise capturing the output in shared logs or history. diff --git a/content/copilot/reference/copilot-cli-reference/cli-config-dir-reference.md b/content/copilot/reference/copilot-cli-reference/cli-config-dir-reference.md index eb157f124adb..b8bf0c3440c0 100644 --- a/content/copilot/reference/copilot-cli-reference/cli-config-dir-reference.md +++ b/content/copilot/reference/copilot-cli-reference/cli-config-dir-reference.md @@ -23,21 +23,22 @@ The `~/.copilot` directory contains the following top-level items. | Path | Type | Description | |------|------|-------------| -| `settings.json` | File | Your personal configuration settings | +| `agents/` | Directory | Personal custom agent definitions | +| `config.json` | File | Automatically managed application state (authentication, installed plugins, and other internal data) | | `copilot-instructions.md` | File | Personal custom instructions (applied to all sessions) | +| `hooks/` | Directory | User-level hook scripts | +| `ide/` | Directory | IDE integration state | +| `installed-plugins/` | Directory | Installed plugin files | | `instructions/` | Directory | Additional personal `*.instructions.md` files | -| `mcp-config.json` | File | User-level MCP server definitions | +| `logs/` | Directory | Session log files | | `lsp-config.json` | File | User-level LSP server definitions | +| `mcp-config.json` | File | User-level MCP server definitions | | `permissions-config.json` | File | Saved tool and directory permissions per project | -| `agents/` | Directory | Personal custom agent definitions | -| `skills/` | Directory | Personal custom skill definitions | -| `hooks/` | Directory | User-level hook scripts | -| `logs/` | Directory | Session log files | +| `plugin-data/` | Directory | Persistent data for installed plugins | | `session-state/` | Directory | Session history and workspace data | | `session-store.db` | File | SQLite database for cross-session data | -| `installed-plugins/` | Directory | Installed plugin files | -| `plugin-data/` | Directory | Persistent data for installed plugins | -| `ide/` | Directory | IDE integration state | +| `settings.json` | File | Your personal configuration settings | +| `skills/` | Directory | Personal custom skill definitions | > [!NOTE] > Not all of these items appear immediately. Some are created on demand the first time you use a particular feature—for example, `installed-plugins/` appears only after you install your first plugin. @@ -51,7 +52,7 @@ The following files are designed to be edited by you directly, or managed throug This is the primary configuration file for {% data variables.copilot.copilot_cli_short %}. You can edit it directly in a text editor, or use interactive commands like `/model` and `/theme` to change specific values from within a session. The file supports JSON with comments (JSONC). > [!NOTE] -> The configuration file was renamed from `config.json` to `settings.json`. Existing settings are automatically migrated from `~/.copilot/config.json` on startup. +> User-editable settings were originally stored in `config.json`. They have been moved to `settings.json`. Any user settings present in `config.json` on startup are automatically migrated to `settings.json`. For the full list of settings and how they interact with repository-level configuration, see [Configuration file settings](#configuration-file-settings) later in this article. @@ -102,6 +103,13 @@ For more information, see [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-cop The following items are managed by the CLI. You generally should not edit them manually. +### `config.json` + +Stores internal application state that is managed automatically by the CLI, including authentication data, installed plugin metadata, and other runtime information. You should not normally need to edit this file. + +> [!NOTE] +> Earlier versions of {% data variables.copilot.copilot_cli_short %} stored both user settings and application state in `config.json`. User-editable settings are now located in `settings.json`. Any user settings in `config.json` at startup are automatically migrated to `settings.json`. Application state fields—such as `loggedInUsers`, `installedPlugins`, `firstLaunchAt`, and `staff`—remain in `config.json` and are not migrated. + ### `permissions-config.json` Stores your saved tool and directory permission decisions, organized by project location. When you approve a tool or grant access to a directory, the CLI records the decision here so you aren't prompted again in the same project. @@ -140,30 +148,20 @@ Contains lock files and state for IDE integrations (for example, when {% data va ## Changing the location of the configuration directory -You can override the default `~/.copilot` location in two ways: - -- **Environment variable**: Set `COPILOT_HOME` to the path of the directory you want to use. +To override the default `~/.copilot` location, set the `COPILOT_HOME` environment variable to the path of the directory you want to use. ```bash copy export COPILOT_HOME=/path/to/my/copilot-config ``` -- **Command-line option**: Use `--config-dir` when launching the CLI. - - ```bash copy - copilot --config-dir /path/to/my/copilot-config - ``` - -The `--config-dir` option takes precedence over `COPILOT_HOME`, which in turn takes precedence over the default `~/.copilot` location. - ### Things to be aware of -- `COPILOT_HOME` replaces the entire `~/.copilot` path. The value you set should be the complete path to the directory you want to use for the configuration files and subdirectories. -- Changing the directory means your existing configuration, session history, installed plugins, and saved permissions will not be found in the new location. Copy or move the contents of `~/.copilot` to the new location if you want to preserve them. -- The **cache directory** (used for marketplace caches, auto-update packages, and other ephemeral data) follows platform conventions and is not affected by `COPILOT_HOME`. It is located at: - - **macOS**: `~/Library/Caches/copilot` - - **Linux**: `$XDG_CACHE_HOME/copilot` or `~/.cache/copilot` - - **Windows**: `%LOCALAPPDATA%/copilot` +* `COPILOT_HOME` replaces the entire `~/.copilot` path. The value you set should be the complete path to the directory you want to use for the configuration files and subdirectories. +* Changing the directory means your existing configuration, session history, installed plugins, and saved permissions will not be found in the new location. Copy or move the contents of `~/.copilot` to the new location if you want to preserve them. +* The **cache directory** (used for marketplace caches, auto-update packages, and other ephemeral data) follows platform conventions and is not affected by `COPILOT_HOME`. It is located at: + * **macOS**: `~/Library/Caches/copilot` + * **Linux**: `$XDG_CACHE_HOME/copilot` or `~/.cache/copilot` + * **Windows**: `%LOCALAPPDATA%/copilot` To override the cache directory separately, set `COPILOT_CACHE_HOME`. @@ -172,8 +170,9 @@ The `--config-dir` option takes precedence over `COPILOT_HOME`, which in turn ta | Item | Safe to delete? | Effect | |------|-----------------|--------| | `agents/`, `skills/`, `hooks/` | Not recommended | You will lose your personal customizations. Back up first. | +| `config.json` | With caution | Resets application state including authentication. You will need to re-authenticate and the CLI will re-detect internal state on next launch. | | `copilot-instructions.md`, `instructions/` | Not recommended | You will lose your personal custom instructions. Back up first. | -| `installed-plugins/` | Not recommended | Use `copilot plugin uninstall` instead, to ensure plugin metadata in `settings.json` stays consistent. | +| `installed-plugins/` | Not recommended | Use `copilot plugin uninstall` instead, to ensure plugin metadata in `config.json` remains accurate. | | `logs/` | Yes | Log files are re-created each session. Deleting them has no functional impact. | | `lsp-config.json` | Not recommended | You will lose your user-level LSP server definitions. Back up first. | | `mcp-config.json` | Not recommended | You will lose your user-level MCP server definitions. Back up first. | @@ -181,7 +180,7 @@ The `--config-dir` option takes precedence over `COPILOT_HOME`, which in turn ta | `plugin-data/` | Yes | Plugin persistent data is re-created as needed. | | `session-state/` | With caution | Deleting removes session history. You will no longer be able to resume past sessions. | | `session-store.db` | With caution | Deleting removes cross-session data. The file is re-created automatically. | -| `settings.json` | With caution | Resets all configuration to defaults. You will need to reconfigure your preferences and re-authenticate. | +| `settings.json` | With caution | Resets all user preferences to defaults. You will need to reconfigure your settings. | ## Configuration file settings @@ -236,7 +235,7 @@ These settings apply across all your sessions and repositories. You can edit thi | `screenReader` | `boolean` | `false` | Enable screen reader optimizations. | | `skillDirectories` | `string[]` | `[]` | Additional directories to search for custom skill definitions (in addition to `~/.copilot/skills/`). | | `statusLine` | `object` | — | Custom status line display. `type`: must be `"command"`. `command`: path to an executable script that receives session JSON on stdin and prints status content to stdout. `padding`: optional number of left-padding spaces. | -| `storeTokenPlaintext` | `boolean` | `false` | Store authentication tokens in plain text in the configuration file when no system keychain is available. | +| `storeTokenPlaintext` | `boolean` | `false` | Allow authentication tokens to be stored in plain text in `config.json` when no system keychain is available. | | `stream` | `boolean` | `true` | Enable streaming responses. | | `streamerMode` | `boolean` | `false` | Hide preview model names and quota details. Useful when demonstrating {% data variables.copilot.copilot_cli_short %} or screen sharing. | | `theme` | `"auto"` \| `"dark"` \| `"light"` | `"auto"` | Terminal color theme. `"auto"` detects the terminal background and chooses accordingly. | diff --git a/content/github-cli/github-cli/github-cli-telemetry.md b/content/github-cli/github-cli/github-cli-telemetry.md new file mode 100644 index 000000000000..7ffe88b94e6f --- /dev/null +++ b/content/github-cli/github-cli/github-cli-telemetry.md @@ -0,0 +1,131 @@ +--- +title: GitHub CLI telemetry +intro: '{% data variables.product.prodname_cli %} sends pseudonymous telemetry to help improve the product. Learn what data is collected and how to opt out.' +versions: + fpt: '*' + ghes: '*' + ghec: '*' +contentType: concepts +category: + - Learn the basics +--- + +## Why {% data variables.product.prodname_cli %} collects telemetry + +As agentic adoption of {% data variables.product.prodname_cli %} grows, visibility into how features are used in practice helps {% data variables.product.github %} improve the product. Telemetry data helps us prioritize development work and evaluate whether features meet real user needs. + +For example, when a new subcommand is shipped, telemetry reveals whether anyone is using it and how. If adoption is low, that signals a need to revisit the feature's discoverability or design. If a subcommand sees high usage with certain flags, that shows where to invest in a better experience. + +> [!IMPORTANT] +> Telemetry data is not collected when the target is {% data variables.product.prodname_ghe_server %} or the user has authenticated {% data variables.product.prodname_cli %} with a {% data variables.product.prodname_ghe_server %} host. + +## Reviewing telemetry + +{% data variables.product.prodname_cli %} is open source. You can review the telemetry implementation in the [cli/cli](https://github.com/cli/cli) repository. If you want to see exactly what would be sent without actually sending it, you can enable logging mode using either an environment variable or a configuration option. + +**Environment variable:** + +```shell +export GH_TELEMETRY=log +``` + +**CLI configuration:** + +```shell +gh config set telemetry log +``` + +In logging mode, the JSON payload that would normally be sent is printed to stderr instead. This lets you inspect every field before deciding whether to keep telemetry enabled. For example: + +```shell +GH_TELEMETRY=log gh skill install github/awesome-copilot git-commit --agent github-copilot --scope project +``` + +This prints something like: + +```text +Telemetry payload: +{ + "events": [ + { + "type": "skill_install", + "dimensions": { + "agent": "", + "agent_hosts": "github-copilot", + "architecture": "arm64", + "ci": "false", + "device_id": "1e9a73a6-c8bd-4e1e-be02-78f4b11de4e1", + "github_actions": "false", + "invocation_id": "96d4862f-26c9-4385-961d-d749ae519c81", + "is_tty": "true", + "os": "darwin", + "repo_visibility": "public", + "skill_host_type": "github.com", + "skill_names": "git-commit", + "skill_owner": "github", + "skill_repo": "awesome-copilot", + "timestamp": "2026-04-24T11:54:51.057Z", + "upstream_source": "none", + "version": "2.91.0" + } + }, + { + "type": "command_invocation", + "dimensions": { + "agent": "", + "architecture": "arm64", + "ci": "false", + "command": "gh skill install", + "device_id": "1e9a73a6-c8bd-4e1e-be02-78f4b11de4e1", + "flags": "agent,scope", + "github_actions": "false", + "invocation_id": "96d4862f-26c9-4385-961d-d749ae519c81", + "is_tty": "true", + "os": "darwin", + "timestamp": "2026-04-24T11:54:51.057Z", + "version": "2.91.0" + } + } + ] +} +``` + +Some commands may include additional telemetry dimensions based on the context. In this example, the `skill_` fields are included because the `repo_visibility` is `public`. + +> [!NOTE] +> This command can only log telemetry for the exact command and context in which it ran. Changing environment variables or authenticated accounts may change the events and event dimensions included in the payload. + +## How to opt out + +You can opt out of the telemetry you see in the `log` mode described above using either an environment variable or a configuration option. + +**Environment variables:** + +```shell +export GH_TELEMETRY=false +``` + +Any falsy value works: `0`, `false`, `disabled`, or an empty string. You can also use the `DO_NOT_TRACK` convention: + +```shell +export DO_NOT_TRACK=true +``` + +**CLI configuration:** + +```shell +gh config set telemetry disabled +``` + +> [!NOTE] +> The environment variables take precedence over the configuration value. + +## Where data is sent + +Telemetry events are sent to {% data variables.product.company_short %}'s internal analytics infrastructure. For more information about how {% data variables.product.company_short %} handles your data, see [AUTOTITLE](/free-pro-team@latest/site-policy/privacy-policies/github-general-privacy-statement). + +## Additional information + +{% data variables.product.prodname_cli %} allows you to add features to the product by installing {% data variables.product.company_short %}-authored and third-party extensions, including agents. These extensions may collect their own usage data and are not controlled by opting out. Consult the specific extension's documentation to learn about its telemetry reporting and whether it can be disabled. + +This page describes client-side data collection for {% data variables.product.prodname_cli %} (`gh`). It does not apply to {% data variables.product.prodname_copilot %} or {% data variables.copilot.copilot_cli %}, which handle data collection separately. For information on the {% data variables.copilot.copilot_cli %}, see [AUTOTITLE](/free-pro-team@latest/copilot/concepts/agents/copilot-cli/about-copilot-cli) and [AUTOTITLE](/free-pro-team@latest/copilot/responsible-use/copilot-cli). diff --git a/content/github-cli/github-cli/index.md b/content/github-cli/github-cli/index.md index 5073342a7ca8..193ddf6741b7 100644 --- a/content/github-cli/github-cli/index.md +++ b/content/github-cli/github-cli/index.md @@ -12,6 +12,7 @@ children: - /using-multiple-accounts - /creating-github-cli-extensions - /using-github-cli-extensions + - /github-cli-telemetry - /github-cli-reference --- diff --git a/content/repositories/managing-your-repositorys-settings-and-features/repository-access-and-collaboration/maintaining-ownership-continuity-of-your-personal-accounts-repositories.md b/content/repositories/managing-your-repositorys-settings-and-features/repository-access-and-collaboration/maintaining-ownership-continuity-of-your-personal-accounts-repositories.md index 9559243d60a9..c8b19c0f295f 100644 --- a/content/repositories/managing-your-repositorys-settings-and-features/repository-access-and-collaboration/maintaining-ownership-continuity-of-your-personal-accounts-repositories.md +++ b/content/repositories/managing-your-repositorys-settings-and-features/repository-access-and-collaboration/maintaining-ownership-continuity-of-your-personal-accounts-repositories.md @@ -30,4 +30,4 @@ The person you invite to be your successor must have a {% data variables.product 1. Click **Add successor**. {% data reusables.user-settings.sudo-mode-popup %} -The user you've invited will be listed as "Pending" until they agree to become your successor. For more information about what happens after a successor is appointed, see [About successors](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/about-successors). \ No newline at end of file +The user you've invited will be listed as "Pending" until they agree to become your successor. For more information about what happens after a successor is appointed, see [About successors](/repositories/creating-and-managing-repositories/access-to-repositories#about-successors). diff --git a/data/tables/copilot/models-and-pricing.yml b/data/tables/copilot/models-and-pricing.yml index fce165c9594b..9756639c0981 100644 --- a/data/tables/copilot/models-and-pricing.yml +++ b/data/tables/copilot/models-and-pricing.yml @@ -81,6 +81,14 @@ cached_input: $0.02 output: $1.25 +- model: GPT-5.5 + provider: openai + release_status: GA + category: Powerful + input: $5.00 + cached_input: $0.50 + output: $30.00 + # Anthropic - model: Claude Haiku 4.5 provider: anthropic @@ -145,16 +153,6 @@ output: $25.00 cache_write: $6.25 -- model: 'Claude Opus 4.6 (fast mode)[^4]' - provider: anthropic - release_status: Public preview - category: Powerful - input: $30.00 - cached_input: $3.00 - output: $150.00 - cache_write: $37.50 - notes: 6x standard Opus 4.6 rates - # Google - model: 'Gemini 2.5 Pro[^5]' provider: google diff --git a/src/content-pipelines/state/copilot-cli.sha b/src/content-pipelines/state/copilot-cli.sha index 695e422c7229..6e0c0a59647f 100644 --- a/src/content-pipelines/state/copilot-cli.sha +++ b/src/content-pipelines/state/copilot-cli.sha @@ -1 +1 @@ -374da3ae1c75caf8102b669ac6f1d624f7dedcd9 +1a74df9f2a81e052650047d18b97fcf82300ba79 diff --git a/src/github-apps/lib/config.json b/src/github-apps/lib/config.json index e991c8b6432b..e0ca8c5a762f 100644 --- a/src/github-apps/lib/config.json +++ b/src/github-apps/lib/config.json @@ -60,5 +60,5 @@ "2022-11-28" ] }, - "sha": "ed0da17e9a4a1937de02bc311a9286009ccb7e2b" + "sha": "d786d3f083a842b342a5395a58ca01cd0faa71e6" } \ No newline at end of file diff --git a/src/rest/lib/config.json b/src/rest/lib/config.json index efa87951b6c4..a2432d0e0a1d 100644 --- a/src/rest/lib/config.json +++ b/src/rest/lib/config.json @@ -55,5 +55,5 @@ ] } }, - "sha": "ed0da17e9a4a1937de02bc311a9286009ccb7e2b" + "sha": "d786d3f083a842b342a5395a58ca01cd0faa71e6" } \ No newline at end of file diff --git a/src/webhooks/lib/config.json b/src/webhooks/lib/config.json index 62a631fdbded..3dc1d8c80680 100644 --- a/src/webhooks/lib/config.json +++ b/src/webhooks/lib/config.json @@ -1,3 +1,3 @@ { - "sha": "ed0da17e9a4a1937de02bc311a9286009ccb7e2b" + "sha": "d786d3f083a842b342a5395a58ca01cd0faa71e6" } \ No newline at end of file