GitHub CLI v2.91.0でテレメトリ収集がデフォルトONになったので設定をまとめてみた
どうも!オペ部の西村祐二です!
GitHub CLI v2.91.0(2026-04-22リリース)で、コマンドの利用状況をGitHubに送信する擬似匿名(pseudonymous)なテレメトリ収集が導入されました。デフォルトで有効になっているため、ポリシーや好みで送信を止めたい場合は明示的にオプトアウトする必要があります。本記事では3通りの無効化方法を実機で検証した結果をまとめます。
何がリリースされたか
- 概要: コマンドの実行状況を収集する擬似匿名テレメトリが導入されました。サンプリングレートは1%(既定)で、送信先は
https://cafe.github.com(実装のdefaultTelemetryEndpointURL。公式ポリシーページには明記されておらずソース上で確認した値)です - 公式リンク:
ポイント
-
オプトアウト方式への切り替え
- 当初は
GH_PRIVATE_ENABLE_TELEMETRY環境変数による明示的な有効化が必要でした。v2.91.0でこのオプトイン方式が撤廃され、OFFにしない限り送信される動作に変わっています - 設定値は
enabled/disabled/logの3値で、既定はenabledです
- 当初は
-
無効化したいケース
- 利用状況とはいえ社外への自動送信があるため、コンプライアンス観点で運用ルールを決めたいケースに該当しそうです
- 個人で送信を止めたい場合も、後述の方法で簡単にオプトアウトできます
-
3通りの無効化方法(詳細は本文)
- 環境変数2種(
GH_TELEMETRY=false/DO_NOT_TRACK=1)とgh config set telemetry disabledの3通りがあります
- 環境変数2種(
試してみる
環境
- GitHub CLI 2.92.0(検証時点でリリース済みの最新版。v2.91.0と同じくテレメトリは既定で有効)
- macOS Sequoia 15
1. 既定の状態を確認する
インストール直後の telemetry 設定値を確認します。
$ gh config get telemetry
enabled
公式ドキュメントへの誘導コマンド(ヘルプトピック)も追加されています。
$ gh help telemetry
gh collects telemetry to help us understand how the CLI is being used and to improve it.
To learn more about what data is collected, how it is used, and how to opt out, see:
<https://cli.github.com/telemetry>
2. 何が送信されるかを GH_TELEMETRY=log で確認する
GH_TELEMETRY=log を指定すると、ペイロードを送信せず標準エラーに出力します。送信前に何が含まれるかを確認したいときに役立ちます。なお、log モードは実装上サンプリングを通過せず常に全件出力されるため、GH_TELEMETRY_SAMPLE_RATE の指定は不要です(後述の検証では enabled モードと条件を揃える意図で併記しています)。
$ GH_TELEMETRY=log gh repo view cli/cli --json name
{"name":"cli"}
Telemetry payload:
{
"events": [
{
"type": "command_invocation",
"dimensions": {
"agent": "claude-code",
"architecture": "arm64",
"ci": "false",
"command": "gh repo view",
"device_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"flags": "json",
"github_actions": "false",
"invocation_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"is_tty": "false",
"os": "darwin",
"timestamp": "2026-04-30T00:36:52.338Z",
"version": "2.92.0"
}
}
]
}
各フィールドの意味は次の通りです。
| フィールド | 内容 | 補足 |
|---|---|---|
agent |
呼び出し元エージェントの識別子 | 今回は Claude Code 経由で実行したため claude-code が記録されました |
architecture |
CPUアーキテクチャ | arm64 / amd64 等 |
ci |
CI環境かどうか | true / false |
command |
解決後のコマンドパス | gh repo view(エイリアスや拡張のコマンド名は記録されません) |
device_id |
デバイス単位の永続UUID | 端末ごとの擬似匿名ID |
flags |
使用したフラグ名 | 上の例では json。フラグの値(name)は含まれません |
github_actions |
GitHub Actions上で実行されているか | true / false |
invocation_id |
1回ごとの呼び出しUUID | 実行のたびに変わります |
is_tty |
標準出力がTTYか | true / false |
os |
OS種別 | darwin / linux / windows |
timestamp |
UTCタイムスタンプ | ISO 8601 |
version |
gh のバージョン |
なお、enabled モードで送信する際は上記に加えて sample_rate ディメンションが付加されますが、log モードでは付与されない実装になっています。
3. 何が送信されないか
リポジトリの実装とacceptance testを確認したところ、次のものは送信対象から除外されているようです。
- フラグの値や位置引数の値:
flagsディメンションにはフラグ名のみが入り、値は記録されません - ユーザー定義のエイリアス名:
gh my-secret-aliasのような独自エイリアスを実行した場合、解決後のコマンド名のみが記録されます - サードパーティ拡張のコマンド名: 公式拡張は記録されますが、コミュニティ拡張のコマンド名は user-authored identifier として除外されます
gh completionの呼び出し: 空ペイロードになるテストが入っています- GitHub Enterprise Server(GHES)ユーザーのテレメトリ全般: 次のいずれかに該当すると
NoOpServiceに切り替わり何も送信されませんGH_ENTERPRISE_TOKENまたはGITHUB_ENTERPRISE_TOKENが設定されているGH_HOSTがGHESホストを指している- 認証済みhostsにGHESが含まれている
なお、Issue #13263では、引数の値が送られないことやIPアドレスの扱いを公式ドキュメントに明記してほしいという要望が出ています。現状のポリシーページに記載がない情報もあるため、コンプライアンスチームへ説明する際はリポジトリの実装も合わせて参照する必要がありそうです。
4. 無効化する3つの方法を実機検証
方法A: GH_TELEMETRY=false 環境変数
$ GH_TELEMETRY=false GH_TELEMETRY_SAMPLE_RATE=100 gh repo view cli/cli --json name
{"name":"cli"}
Telemetry payload: のログが出力されず、送信が止まっていることがわかります。"" / 0 / false / no / disabled / off のいずれかの値で無効化されます(大文字小文字は区別なし)。
方法B: DO_NOT_TRACK=1 環境変数
$ DO_NOT_TRACK=1 GH_TELEMETRY_SAMPLE_RATE=100 gh repo view cli/cli --json name
{"name":"cli"}
Do Not Track は、利用統計を送らないでほしいという意思をCLIツールへ伝える業界標準の環境変数です。gh 以外でも同じ変数を参照するツールがあるため、まとめてオプトアウトしたい場合に便利そうです。
方法C: gh config set telemetry disabled
$ gh config set telemetry disabled
$ gh config get telemetry
disabled
$ GH_TELEMETRY_SAMPLE_RATE=100 gh repo view cli/cli --json name
{"name":"cli"}
設定ファイル(macOS/Linuxは ~/.config/gh/config.yml、Windowsは %AppData%\GitHub CLI\config.yml)に永続化されます。CIや一時シェルではなく常用環境向けで、一度設定すれば以降は有効なままです。
優先順位を確認
設定を disabled にした状態で GH_TELEMETRY=log を指定すると、ログ出力されました。
$ gh config get telemetry
disabled
$ GH_TELEMETRY=log gh repo view cli/cli --json name
{"name":"cli"}
Telemetry payload:
{
"events": [
...
]
}
優先順位は GH_TELEMETRY > DO_NOT_TRACK > config で、環境変数が config に優先する実装です。組織配布で確実にオフにしたい場合は、環境変数で固定する方が安全そうです。
試してみた感想
実際に GH_TELEMETRY=log でペイロードを覗くと、フラグ値や引数値が含まれず、サードパーティ拡張のコマンド名も除外されていました。プライバシー配慮の設計はしっかりした印象です。一方で、既定でONになる方針はHacker Newsなどでも議論があります。企業ポリシーへの影響を考えると、運用ルールとして明示する方が良さそうです。
組織配布する場合の選択肢
組織配布で全社的にオフにしたい場合、優先順位の都合で環境変数を使う方が確実そうです。
なお、ビルド時にテレメトリを既定オフにできるオプションを追加してほしいというIssue #13260も上がっています。組織向けのカスタムビルド配布パスが整備される可能性もありそうです。
まとめ
GitHub CLI v2.91.0で擬似匿名テレメトリが既定でONになりました。今回の検証で得た選択の目安は次の通りです。
- 個人で恒久的に止めたい:
gh config set telemetry disabledで永続化が手軽 - CIや特定シェルだけ止めたい:
GH_TELEMETRY=falseまたはDO_NOT_TRACK=1を一時的に指定 - 複数のCLIツールでまとめて止めたい:
DO_NOT_TRACK=1を環境にセット - 組織で配布したい: 環境変数
GH_TELEMETRY=falseを配布、設定することをルール化する方が確実
誰かの参考になれば幸いです。
関連リンク:







