← knowledge.oriz.in

VS Code Copilot warning suppression + GitHub Copilot Free signup

runbook vscodecopilotgithubidesettingsfree-tierno-card

VS Code Copilot warning suppression + Copilot Free signup

Context

VS Code 1.95+ ships bundled Copilot setup UI even when the extensions are uninstalled. The "Set up Copilot" notification re-appears on startup unless settings explicitly disable it. Microsoft's Copilot-by-default push means there is no toggle in the UI to permanently silence it — the kill must happen in settings.json.

Two paths

Path A — Take the free tier (recommended)

GitHub Copilot Free (launched Dec 2024) gives every personal GitHub account:

Signup steps:

  1. Go to https://github.com/features/copilot while signed in.
  2. Click "Start using Copilot Free" (or equivalent CTA).
  3. Confirm the activation; no card prompt should appear.
  4. In VS Code, install the official GitHub.copilot + GitHub.copilot-chat extensions.
  5. Sign in with the same GitHub account.

Verify the token's copilot scope is present:

val=$(grep -E "^GH_PAT=" .env | cut -d= -f2-)
curl -sI -H "Authorization: Bearer $val" https://api.github.com/user \
  | grep -i 'x-oauth-scopes' | tr ',' '\n' | grep -i copilot
# Expected: ` copilot` in the output

Path B — Disable the bundled UI entirely (no Copilot at all)

If you don't want to take the free tier (avoiding the Microsoft account-data attach, or just disliking the IDE clutter), apply these settings to both stable + Insiders:

Add (or update) these keys:

{
    "github.copilot.enable": {
        "*": false,
        "plaintext": false,
        "markdown": false,
        "scminput": false,
        "yaml": false
    },
    "github.copilot.chat.welcomeMessage": "never",
    "chat.commandCenter.enabled": false,
    "chat.setupFromDialog": false,
    "chat.disableAIFeatures": true,
    "workbench.welcomePage.experimental.videoTutorials": "off",
    "workbench.tips.enabled": false,
    "extensions.experimental.affinity": {
        "GitHub.copilot": 0,
        "GitHub.copilot-chat": 0
    }
}

Then uninstall the extensions if they're installed:

code --uninstall-extension GitHub.copilot 2>/dev/null
code --uninstall-extension GitHub.copilot-chat 2>/dev/null
code-insiders --uninstall-extension GitHub.copilot 2>/dev/null
code-insiders --uninstall-extension GitHub.copilot-chat 2>/dev/null

Restart VS Code. The warning should be gone.

What each setting does

Setting Effect
github.copilot.enable.*: false Tells the (possibly bundled) Copilot completion engine to do nothing per file type.
github.copilot.chat.welcomeMessage: "never" Suppresses the chat panel's first-run greeting.
chat.commandCenter.enabled: false Removes the Copilot icon from the title bar's command center.
chat.setupFromDialog: false Prevents the modal "Set up Copilot" dialog on startup.
chat.disableAIFeatures: true Master switch — turns off all AI surfaces VS Code knows about.
workbench.tips.enabled: false Disables the periodic "did you know about Copilot" hints.
extensions.experimental.affinity Pins Copilot extensions to extension host 0, isolating their startup cost if they DO get installed by accident.

GitHub tokens — what's expected in .env

The umbrella .env (gitignored, per rules-centralized-at-umbrella-no-per-repo) has these GitHub-related vars:

# GitHub Personal Access Token (classic) with the full admin scope set.
# Get one at: https://github.com/settings/tokens
#   1. "Generate new token (classic)"
#   2. Tick: repo, workflow, write:packages, delete_repo, admin:org,
#      admin:enterprise, admin:public_key, admin:repo_hook, gist,
#      notifications, user, audit_log, codespace, copilot, project
#   3. Set "No expiration" or 90 days max
#   4. Copy starts with `ghp_` (40 chars after prefix)
GH_PAT=

# Same scopes as GH_PAT — used by scripts that need admin power.
GH_ADMIN_PAT=

# Default token consumed by `gh` CLI + 3rd-party libraries that read GITHUB_TOKEN.
GITHUB_TOKEN=

# GitHub username (lowercase).
GH_USERNAME=

Audit your tokens (verify each has copilot scope + reads as your user):

for key in GH_PAT GH_ADMIN_PAT GITHUB_TOKEN; do
  val=$(grep -E "^${key}=" .env | cut -d= -f2-)
  echo "--- $key ---"
  scopes=$(curl -sI -H "Authorization: Bearer $val" https://api.github.com/user \
    | grep -i 'x-oauth-scopes:' | sed 's/^[^:]*: //')
  user=$(curl -s -H "Authorization: Bearer $val" https://api.github.com/user | jq -r .login)
  echo "  user: $user"
  echo "  scopes: $scopes"
done

Expected: all 3 return your username + a long scope string including copilot.

Anti-patterns

Verification after applying

  1. Close all VS Code windows.
  2. Reopen any folder.
  3. Watch the bottom-right status bar + the title bar — no "Set up Copilot" badge, no notification toasts.
  4. Open Command Palette → search "copilot" → no commands should be exposed for an uninstalled extension.

If a warning still appears, screenshot the exact message — the rule is updated when a specific notification has its own dedicated setting key.