diff --git a/.changeset/patch-update-model-multipliers-pricing-page.md b/.changeset/patch-update-model-multipliers-pricing-page.md new file mode 100644 index 00000000000..4c9fb599971 --- /dev/null +++ b/.changeset/patch-update-model-multipliers-pricing-page.md @@ -0,0 +1,5 @@ +--- +"gh-aw": patch +--- + +Update model multipliers to use https://docs.github.com/en/copilot/reference/copilot-billing/models-and-pricing as the source of truth. Multipliers for all models listed on that page are now derived from the input token price at a 1:1 rate ($1 USD per 1M input tokens = 1x multiplier). Affected models: GPT-5 mini, GPT-5.2, GPT-5.2-Codex, GPT-5.3-Codex, GPT-5.4, GPT-5.4 mini, GPT-5.4 nano, GPT-5.5, Claude Haiku 4.5, Claude Sonnet 4/4.5/4.6, Claude Opus 4.5/4.6/4.7/4.8, Gemini 2.5 Pro, Gemini 3 Flash, Gemini 3.1 Pro, Gemini 3.5 Flash, Raptor mini, and MAI-Code-1-Flash. diff --git a/.github/workflows/ab-testing-advisor.lock.yml b/.github/workflows/ab-testing-advisor.lock.yml index 07fdbacb97f..162e8a38fc2 100644 --- a/.github/workflows/ab-testing-advisor.lock.yml +++ b/.github/workflows/ab-testing-advisor.lock.yml @@ -837,6 +837,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1388,6 +1391,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/ace-editor.lock.yml b/.github/workflows/ace-editor.lock.yml index c0db8127921..818d3ff830a 100644 --- a/.github/workflows/ace-editor.lock.yml +++ b/.github/workflows/ace-editor.lock.yml @@ -739,6 +739,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/agent-performance-analyzer.lock.yml b/.github/workflows/agent-performance-analyzer.lock.yml index eb63f910086..6f6b337c678 100644 --- a/.github/workflows/agent-performance-analyzer.lock.yml +++ b/.github/workflows/agent-performance-analyzer.lock.yml @@ -977,6 +977,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1537,6 +1540,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/agent-persona-explorer.lock.yml b/.github/workflows/agent-persona-explorer.lock.yml index dc10a2b641c..ac75ab2274d 100644 --- a/.github/workflows/agent-persona-explorer.lock.yml +++ b/.github/workflows/agent-persona-explorer.lock.yml @@ -928,6 +928,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1479,6 +1482,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/archie.lock.yml b/.github/workflows/archie.lock.yml index ac3dc47b3f1..6fe541e80df 100644 --- a/.github/workflows/archie.lock.yml +++ b/.github/workflows/archie.lock.yml @@ -881,6 +881,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1432,6 +1435,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/architecture-guardian.lock.yml b/.github/workflows/architecture-guardian.lock.yml index 2d9d46e7aa8..7f7a4bbd10e 100644 --- a/.github/workflows/architecture-guardian.lock.yml +++ b/.github/workflows/architecture-guardian.lock.yml @@ -824,6 +824,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1354,6 +1357,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/artifacts-summary.lock.yml b/.github/workflows/artifacts-summary.lock.yml index 22a07045ed5..8f308e6ba45 100644 --- a/.github/workflows/artifacts-summary.lock.yml +++ b/.github/workflows/artifacts-summary.lock.yml @@ -766,6 +766,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1298,6 +1301,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/auto-triage-issues.lock.yml b/.github/workflows/auto-triage-issues.lock.yml index b6a3ccd35b2..8686a443189 100644 --- a/.github/workflows/auto-triage-issues.lock.yml +++ b/.github/workflows/auto-triage-issues.lock.yml @@ -846,6 +846,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1378,6 +1381,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/bot-detection.lock.yml b/.github/workflows/bot-detection.lock.yml index 688ed5703a9..85d212fabf5 100644 --- a/.github/workflows/bot-detection.lock.yml +++ b/.github/workflows/bot-detection.lock.yml @@ -860,6 +860,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/brave.lock.yml b/.github/workflows/brave.lock.yml index 84f4f554683..a5f189133f8 100644 --- a/.github/workflows/brave.lock.yml +++ b/.github/workflows/brave.lock.yml @@ -851,6 +851,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1401,6 +1404,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/breaking-change-checker.lock.yml b/.github/workflows/breaking-change-checker.lock.yml index 8cc88ce75cc..9bc8694d375 100644 --- a/.github/workflows/breaking-change-checker.lock.yml +++ b/.github/workflows/breaking-change-checker.lock.yml @@ -808,6 +808,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1343,6 +1346,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/chaos-pr-bundle-fuzzer.lock.yml b/.github/workflows/chaos-pr-bundle-fuzzer.lock.yml index f25a6468f86..e6b017dc75b 100644 --- a/.github/workflows/chaos-pr-bundle-fuzzer.lock.yml +++ b/.github/workflows/chaos-pr-bundle-fuzzer.lock.yml @@ -817,6 +817,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1361,6 +1364,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/ci-coach.lock.yml b/.github/workflows/ci-coach.lock.yml index 69c47c1a8bc..bc0794aeafc 100644 --- a/.github/workflows/ci-coach.lock.yml +++ b/.github/workflows/ci-coach.lock.yml @@ -897,6 +897,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1461,6 +1464,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/cli-consistency-checker.lock.yml b/.github/workflows/cli-consistency-checker.lock.yml index 73425192d18..57cb27132be 100644 --- a/.github/workflows/cli-consistency-checker.lock.yml +++ b/.github/workflows/cli-consistency-checker.lock.yml @@ -785,6 +785,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1309,6 +1312,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/code-scanning-fixer.lock.yml b/.github/workflows/code-scanning-fixer.lock.yml index 9029de997be..e17febbb999 100644 --- a/.github/workflows/code-scanning-fixer.lock.yml +++ b/.github/workflows/code-scanning-fixer.lock.yml @@ -847,6 +847,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1419,6 +1422,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/code-simplifier.lock.yml b/.github/workflows/code-simplifier.lock.yml index ac67c1d5831..20fc5fda438 100644 --- a/.github/workflows/code-simplifier.lock.yml +++ b/.github/workflows/code-simplifier.lock.yml @@ -922,6 +922,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1456,6 +1459,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/constraint-solving-potd.lock.yml b/.github/workflows/constraint-solving-potd.lock.yml index 3d67a34c032..cfe24261cf4 100644 --- a/.github/workflows/constraint-solving-potd.lock.yml +++ b/.github/workflows/constraint-solving-potd.lock.yml @@ -776,6 +776,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1320,6 +1323,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/contribution-check.lock.yml b/.github/workflows/contribution-check.lock.yml index cb9999d4afd..b292cfa76aa 100644 --- a/.github/workflows/contribution-check.lock.yml +++ b/.github/workflows/contribution-check.lock.yml @@ -905,6 +905,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1435,6 +1438,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/copilot-cli-deep-research.lock.yml b/.github/workflows/copilot-cli-deep-research.lock.yml index 6bba276d0bf..c274de64c23 100644 --- a/.github/workflows/copilot-cli-deep-research.lock.yml +++ b/.github/workflows/copilot-cli-deep-research.lock.yml @@ -820,6 +820,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1372,6 +1375,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/copilot-opt.lock.yml b/.github/workflows/copilot-opt.lock.yml index 8e3dc45a3fa..59dacd6ea58 100644 --- a/.github/workflows/copilot-opt.lock.yml +++ b/.github/workflows/copilot-opt.lock.yml @@ -855,6 +855,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1405,6 +1408,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/copilot-pr-merged-report.lock.yml b/.github/workflows/copilot-pr-merged-report.lock.yml index ef11e8bdba1..234e878256e 100644 --- a/.github/workflows/copilot-pr-merged-report.lock.yml +++ b/.github/workflows/copilot-pr-merged-report.lock.yml @@ -733,6 +733,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1279,6 +1282,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/copilot-pr-nlp-analysis.lock.yml b/.github/workflows/copilot-pr-nlp-analysis.lock.yml index 2a4857b521d..cc86f5bb5ee 100644 --- a/.github/workflows/copilot-pr-nlp-analysis.lock.yml +++ b/.github/workflows/copilot-pr-nlp-analysis.lock.yml @@ -892,6 +892,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1472,6 +1475,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/copilot-pr-prompt-analysis.lock.yml b/.github/workflows/copilot-pr-prompt-analysis.lock.yml index 1160f88905a..3dd11739f53 100644 --- a/.github/workflows/copilot-pr-prompt-analysis.lock.yml +++ b/.github/workflows/copilot-pr-prompt-analysis.lock.yml @@ -843,6 +843,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1410,6 +1413,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/craft.lock.yml b/.github/workflows/craft.lock.yml index da937b91a23..7707817f5ba 100644 --- a/.github/workflows/craft.lock.yml +++ b/.github/workflows/craft.lock.yml @@ -849,6 +849,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1405,6 +1408,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/daily-agent-of-the-day-blog-writer.lock.yml b/.github/workflows/daily-agent-of-the-day-blog-writer.lock.yml index 4f73de583a3..4e90b175e9a 100644 --- a/.github/workflows/daily-agent-of-the-day-blog-writer.lock.yml +++ b/.github/workflows/daily-agent-of-the-day-blog-writer.lock.yml @@ -954,6 +954,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1526,6 +1529,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/daily-ambient-context-optimizer.lock.yml b/.github/workflows/daily-ambient-context-optimizer.lock.yml index 3ef1accc27c..cd5dca99776 100644 --- a/.github/workflows/daily-ambient-context-optimizer.lock.yml +++ b/.github/workflows/daily-ambient-context-optimizer.lock.yml @@ -869,6 +869,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1401,6 +1404,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/daily-architecture-diagram.lock.yml b/.github/workflows/daily-architecture-diagram.lock.yml index d61436b0f1f..a3d5bf2b7a5 100644 --- a/.github/workflows/daily-architecture-diagram.lock.yml +++ b/.github/workflows/daily-architecture-diagram.lock.yml @@ -922,6 +922,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1479,6 +1482,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/daily-assign-issue-to-user.lock.yml b/.github/workflows/daily-assign-issue-to-user.lock.yml index ffa991dcebe..daf33d510a6 100644 --- a/.github/workflows/daily-assign-issue-to-user.lock.yml +++ b/.github/workflows/daily-assign-issue-to-user.lock.yml @@ -778,6 +778,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1309,6 +1312,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/daily-byok-ollama-test.lock.yml b/.github/workflows/daily-byok-ollama-test.lock.yml index b246423ca96..cadd53b30c4 100644 --- a/.github/workflows/daily-byok-ollama-test.lock.yml +++ b/.github/workflows/daily-byok-ollama-test.lock.yml @@ -776,6 +776,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1286,6 +1289,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/daily-cli-performance.lock.yml b/.github/workflows/daily-cli-performance.lock.yml index 866ea9fd34d..9a50ff8a35f 100644 --- a/.github/workflows/daily-cli-performance.lock.yml +++ b/.github/workflows/daily-cli-performance.lock.yml @@ -1033,6 +1033,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1601,6 +1604,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/daily-cli-tools-tester.lock.yml b/.github/workflows/daily-cli-tools-tester.lock.yml index 481aab27c23..07abc6a5f16 100644 --- a/.github/workflows/daily-cli-tools-tester.lock.yml +++ b/.github/workflows/daily-cli-tools-tester.lock.yml @@ -904,6 +904,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1428,6 +1431,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/daily-community-attribution.lock.yml b/.github/workflows/daily-community-attribution.lock.yml index efda1c585c0..0cd8eff1d57 100644 --- a/.github/workflows/daily-community-attribution.lock.yml +++ b/.github/workflows/daily-community-attribution.lock.yml @@ -937,6 +937,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1493,6 +1496,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/daily-compiler-quality.lock.yml b/.github/workflows/daily-compiler-quality.lock.yml index 304ff25c12e..a486038ae48 100644 --- a/.github/workflows/daily-compiler-quality.lock.yml +++ b/.github/workflows/daily-compiler-quality.lock.yml @@ -937,6 +937,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1501,6 +1504,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/daily-compiler-threat-spec-optimizer.lock.yml b/.github/workflows/daily-compiler-threat-spec-optimizer.lock.yml index 8cb420dc3a1..31339c92043 100644 --- a/.github/workflows/daily-compiler-threat-spec-optimizer.lock.yml +++ b/.github/workflows/daily-compiler-threat-spec-optimizer.lock.yml @@ -851,6 +851,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1391,6 +1394,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/daily-experiment-report.lock.yml b/.github/workflows/daily-experiment-report.lock.yml index 9f7d2aeac8f..419c47059ba 100644 --- a/.github/workflows/daily-experiment-report.lock.yml +++ b/.github/workflows/daily-experiment-report.lock.yml @@ -891,6 +891,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1453,6 +1456,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/daily-file-diet.lock.yml b/.github/workflows/daily-file-diet.lock.yml index cf7a0532cec..248bd7f5c68 100644 --- a/.github/workflows/daily-file-diet.lock.yml +++ b/.github/workflows/daily-file-diet.lock.yml @@ -878,6 +878,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1409,6 +1412,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/daily-firewall-report.lock.yml b/.github/workflows/daily-firewall-report.lock.yml index bbacd503091..eae13fd4825 100644 --- a/.github/workflows/daily-firewall-report.lock.yml +++ b/.github/workflows/daily-firewall-report.lock.yml @@ -846,6 +846,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1389,6 +1392,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/daily-geo-optimizer.lock.yml b/.github/workflows/daily-geo-optimizer.lock.yml index 6a9865f8f40..6ddd63f6a55 100644 --- a/.github/workflows/daily-geo-optimizer.lock.yml +++ b/.github/workflows/daily-geo-optimizer.lock.yml @@ -803,6 +803,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1341,6 +1344,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/daily-hippo-learn.lock.yml b/.github/workflows/daily-hippo-learn.lock.yml index c6c83856963..47e05300558 100644 --- a/.github/workflows/daily-hippo-learn.lock.yml +++ b/.github/workflows/daily-hippo-learn.lock.yml @@ -913,6 +913,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1477,6 +1480,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/daily-issues-report.lock.yml b/.github/workflows/daily-issues-report.lock.yml index 44f83e75b01..280ec0981a7 100644 --- a/.github/workflows/daily-issues-report.lock.yml +++ b/.github/workflows/daily-issues-report.lock.yml @@ -1043,6 +1043,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1622,6 +1625,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/daily-malicious-code-scan.lock.yml b/.github/workflows/daily-malicious-code-scan.lock.yml index 1040e6e713b..7db6f7eaff8 100644 --- a/.github/workflows/daily-malicious-code-scan.lock.yml +++ b/.github/workflows/daily-malicious-code-scan.lock.yml @@ -819,6 +819,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/.github/workflows/daily-mcp-concurrency-analysis.lock.yml b/.github/workflows/daily-mcp-concurrency-analysis.lock.yml index 5afea361c58..46283fdcddc 100644 --- a/.github/workflows/daily-mcp-concurrency-analysis.lock.yml +++ b/.github/workflows/daily-mcp-concurrency-analysis.lock.yml @@ -936,6 +936,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN @@ -1493,6 +1496,9 @@ jobs: run: | set -o pipefail printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'rm -f /home/runner/.copilot/settings.json' EXIT + mkdir -p /home/runner/.copilot + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > /home/runner/.copilot/settings.json touch /tmp/gh-aw/agent-step-summary.md GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) export GH_AW_NODE_BIN diff --git a/actions/setup/js/model_multipliers.json b/actions/setup/js/model_multipliers.json index 7842ba149e2..171e436920c 100644 --- a/actions/setup/js/model_multipliers.json +++ b/actions/setup/js/model_multipliers.json @@ -1,6 +1,6 @@ { "version": "1", - "description": "Effective Tokens (ET) computation data per the gh-aw Effective Tokens Specification v0.2.0. Token class weights are applied first to normalize across token classes, then the per-model multiplier scales the result relative to the reference model. The registry keeps complete model history; entries are removed only by explicit manual deletion.", + "description": "Effective Tokens (ET) computation data per the gh-aw Effective Tokens Specification v0.2.0. Token class weights are applied first to normalize across token classes, then the per-model multiplier scales the result relative to the reference model. Multipliers for models listed on https://docs.github.com/en/copilot/reference/copilot-billing/models-and-pricing are derived from the input token price ($1 USD per 1M tokens = 1x multiplier). The registry keeps complete model history; entries are removed only by explicit manual deletion.", "reference_model": "claude-sonnet-4.5", "token_class_weights": { "input": 1.0, @@ -10,18 +10,18 @@ "cache_write": 1.0 }, "multipliers": { - "claude-haiku-4-5": 0.33, - "claude-haiku-4.5": 0.33, - "claude-haiku-4-5-20251001": 0.33, + "claude-haiku-4-5": 1.0, + "claude-haiku-4.5": 1.0, + "claude-haiku-4-5-20251001": 1.0, "claude-3-5-haiku": 0.1, "claude-3-haiku": 0.1, - "claude-sonnet-4": 1.0, - "claude-sonnet-4-20250514": 1.0, - "claude-sonnet-4-5": 6.0, - "claude-sonnet-4.5": 6.0, - "claude-sonnet-4-5-20250929": 6.0, - "claude-sonnet-4-6": 9.0, - "claude-sonnet-4.6": 9.0, + "claude-sonnet-4": 3.0, + "claude-sonnet-4-20250514": 3.0, + "claude-sonnet-4-5": 3.0, + "claude-sonnet-4.5": 3.0, + "claude-sonnet-4-5-20250929": 3.0, + "claude-sonnet-4-6": 3.0, + "claude-sonnet-4.6": 3.0, "claude-3-5-sonnet": 1.0, "claude-3-7-sonnet": 1.0, "claude-3-sonnet": 1.0, @@ -29,16 +29,16 @@ "claude-opus-4-20250514": 5.0, "claude-opus-4-1": 5.0, "claude-opus-4-1-20250805": 5.0, - "claude-opus-4-5": 15.0, - "claude-opus-4-5-20251101": 15.0, - "claude-opus-4-6": 27.0, - "claude-opus-4-7": 27.0, - "claude-opus-4-8": 27.0, - "claude-opus-4.5": 15.0, - "claude-opus-4.6": 27.0, - "claude-opus-4.6-fast": 27.0, - "claude-opus-4.7": 27.0, - "claude-opus-4.8": 27.0, + "claude-opus-4-5": 5.0, + "claude-opus-4-5-20251101": 5.0, + "claude-opus-4-6": 5.0, + "claude-opus-4-7": 5.0, + "claude-opus-4-8": 5.0, + "claude-opus-4.5": 5.0, + "claude-opus-4.6": 5.0, + "claude-opus-4.6-fast": 5.0, + "claude-opus-4.7": 5.0, + "claude-opus-4.8": 5.0, "claude-3-5-opus": 5.0, "claude-3-opus": 5.0, "gpt-4o-2024-05-13": 0.33, @@ -60,8 +60,8 @@ "gpt-5-search-api": 1.0, "gpt-5-search-api-2025-10-14": 1.0, "gpt-5-chat-latest": 1.0, - "gpt-5-mini": 0.33, - "gpt-5-mini-2025-08-07": 0.33, + "gpt-5-mini": 0.25, + "gpt-5-mini-2025-08-07": 0.25, "gpt-5-nano": 0.05, "gpt-5-nano-2025-08-07": 0.05, "gpt-5-pro": 2.0, @@ -74,25 +74,25 @@ "gpt-5.1-codex-mini": 0.33, "gpt-5.1-codex-max": 3.0, "gpt-5.1-codex-max-customsummarizer": 3.0, - "gpt-5.2": 3.0, - "gpt-5.2-2025-12-11": 3.0, - "gpt-5.2-chat-latest": 3.0, - "gpt-5.2-codex": 3.0, + "gpt-5.2": 1.75, + "gpt-5.2-2025-12-11": 1.75, + "gpt-5.2-chat-latest": 1.75, + "gpt-5.2-codex": 1.75, "gpt-5.2-pro": 3.0, "gpt-5.2-pro-2025-12-11": 3.0, "gpt-5.3-chat-latest": 3.0, - "gpt-5.3-codex": 6.0, - "gpt-5.3-codex-api-preview": 6.0, - "gpt-5.3-codex-api-preview-preambles": 6.0, - "gpt-5.4": 6.0, - "gpt-5.4-2026-03-05": 6.0, - "gpt-5.4-mini": 6.0, - "gpt-5.4-mini-2026-03-17": 6.0, - "gpt-5.4-nano-2026-03-17": 6.0, + "gpt-5.3-codex": 1.75, + "gpt-5.3-codex-api-preview": 1.75, + "gpt-5.3-codex-api-preview-preambles": 1.75, + "gpt-5.4": 2.5, + "gpt-5.4-2026-03-05": 2.5, + "gpt-5.4-mini": 0.75, + "gpt-5.4-mini-2026-03-17": 0.75, + "gpt-5.4-nano-2026-03-17": 0.2, "gpt-5.4-pro": 6.0, "gpt-5.4-pro-2026-03-05": 6.0, - "gpt-5.5": 57.0, - "gpt-5.5-2026-04-23": 57.0, + "gpt-5.5": 5.0, + "gpt-5.5-2026-04-23": 5.0, "gpt-5.5-pro": 2.0, "gpt-5.5-pro-2026-04-23": 2.0, "o1": 3.0, @@ -112,8 +112,8 @@ "o4-mini-2025-04-16": 0.5, "o4-mini-deep-research": 0.5, "o4-mini-deep-research-2025-06-26": 0.5, - "gemini-2.5-pro": 1.0, - "gemini-2.5-pro-preview-tts": 1.0, + "gemini-2.5-pro": 1.25, + "gemini-2.5-pro-preview-tts": 1.25, "gemini-2.5-flash": 0.2, "gemini-2.5-flash-native-audio-latest": 0.2, "gemini-2.5-flash-native-audio-preview-09-2025": 0.2, @@ -130,19 +130,19 @@ "gemini-flash-latest": 0.2, "gemini-flash-lite-latest": 0.1, "gemini-pro-latest": 1.0, - "gemini-3-flash-preview": 0.33, + "gemini-3-flash-preview": 0.5, "gemini-3-pro-preview": 6.0, "gemini-3-pro-image": 6.0, "gemini-3-pro-image-preview": 6.0, - "gemini-3.1-pro-preview": 6.0, - "gemini-3.1-pro-preview-customtools": 6.0, + "gemini-3.1-pro-preview": 2.0, + "gemini-3.1-pro-preview-customtools": 2.0, "gemini-3.1-flash-live-preview": 0.1, "gemini-3.1-flash-lite": 0.1, "gemini-3.1-flash-lite-preview": 0.1, "gemini-3.1-flash-image": 0.33, "gemini-3.1-flash-image-preview": 0.33, "gemini-3.1-flash-tts-preview": 0.1, - "gemini-3.5-flash": 14.0, + "gemini-3.5-flash": 1.5, "antigravity-preview-05-2026": 1.0, "nano-banana-pro-preview": 0.2, "gemini-2.5-computer-use-preview": 0.2, @@ -152,10 +152,10 @@ "deep-research-max-preview-04-2026": 1.0, "deep-research-preview-04-2026": 1.0, "deep-research-pro-preview-12-2025": 1.0, - "MAI-Code-1-Flash": 0.33, + "MAI-Code-1-Flash": 0.75, "gemma-4-26b-a4b-it": 0.1, "gemma-4-31b-it": 0.2, "grok-code-fast-1": 0.33, - "raptor-mini": 0.33 + "raptor-mini": 0.25 } } diff --git a/docs/src/content/docs/reference/model-tables.md b/docs/src/content/docs/reference/model-tables.md index f260e488bc0..15701c1cfe0 100644 --- a/docs/src/content/docs/reference/model-tables.md +++ b/docs/src/content/docs/reference/model-tables.md @@ -96,18 +96,18 @@ Before per-model multipliers are applied, raw token counts are weighted by token | Model | Multiplier | |-------|-----------| -| `claude-haiku-4-5` | 0.33 | -| `claude-haiku-4.5` | 0.33 | -| `claude-haiku-4-5-20251001` | 0.33 | +| `claude-haiku-4-5` | 1 | +| `claude-haiku-4.5` | 1 | +| `claude-haiku-4-5-20251001` | 1 | | `claude-3-5-haiku` | 0.1 | | `claude-3-haiku` | 0.1 | -| `claude-sonnet-4` | 1 | -| `claude-sonnet-4-20250514` | 1 | -| `claude-sonnet-4-5` | 6 | -| `claude-sonnet-4.5` | 6 | -| `claude-sonnet-4-5-20250929` | 6 | -| `claude-sonnet-4-6` | 9 | -| `claude-sonnet-4.6` | 9 | +| `claude-sonnet-4` | 3 | +| `claude-sonnet-4-20250514` | 3 | +| `claude-sonnet-4-5` | 3 | +| `claude-sonnet-4.5` | 3 | +| `claude-sonnet-4-5-20250929` | 3 | +| `claude-sonnet-4-6` | 3 | +| `claude-sonnet-4.6` | 3 | | `claude-3-5-sonnet` | 1 | | `claude-3-7-sonnet` | 1 | | `claude-3-sonnet` | 1 | @@ -115,16 +115,16 @@ Before per-model multipliers are applied, raw token counts are weighted by token | `claude-opus-4-20250514` | 5 | | `claude-opus-4-1` | 5 | | `claude-opus-4-1-20250805` | 5 | -| `claude-opus-4-5` | 15 | -| `claude-opus-4-5-20251101` | 15 | -| `claude-opus-4-6` | 27 | -| `claude-opus-4-7` | 27 | -| `claude-opus-4-8` | 27 | -| `claude-opus-4.5` | 15 | -| `claude-opus-4.6` | 27 | -| `claude-opus-4.6-fast` | 27 | -| `claude-opus-4.7` | 27 | -| `claude-opus-4.8` | 27 | +| `claude-opus-4-5` | 5 | +| `claude-opus-4-5-20251101` | 5 | +| `claude-opus-4-6` | 5 | +| `claude-opus-4-7` | 5 | +| `claude-opus-4-8` | 5 | +| `claude-opus-4.5` | 5 | +| `claude-opus-4.6` | 5 | +| `claude-opus-4.6-fast` | 5 | +| `claude-opus-4.7` | 5 | +| `claude-opus-4.8` | 5 | | `claude-3-5-opus` | 5 | | `claude-3-opus` | 5 | @@ -151,8 +151,8 @@ Before per-model multipliers are applied, raw token counts are weighted by token | `gpt-5-search-api` | 1 | | `gpt-5-search-api-2025-10-14` | 1 | | `gpt-5-chat-latest` | 1 | -| `gpt-5-mini` | 0.33 | -| `gpt-5-mini-2025-08-07` | 0.33 | +| `gpt-5-mini` | 0.25 | +| `gpt-5-mini-2025-08-07` | 0.25 | | `gpt-5-nano` | 0.05 | | `gpt-5-nano-2025-08-07` | 0.05 | | `gpt-5-pro` | 2 | @@ -165,25 +165,25 @@ Before per-model multipliers are applied, raw token counts are weighted by token | `gpt-5.1-codex-mini` | 0.33 | | `gpt-5.1-codex-max` | 3 | | `gpt-5.1-codex-max-customsummarizer` | 3 | -| `gpt-5.2` | 3 | -| `gpt-5.2-2025-12-11` | 3 | -| `gpt-5.2-chat-latest` | 3 | -| `gpt-5.2-codex` | 3 | +| `gpt-5.2` | 1.75 | +| `gpt-5.2-2025-12-11` | 1.75 | +| `gpt-5.2-chat-latest` | 1.75 | +| `gpt-5.2-codex` | 1.75 | | `gpt-5.2-pro` | 3 | | `gpt-5.2-pro-2025-12-11` | 3 | | `gpt-5.3-chat-latest` | 3 | -| `gpt-5.3-codex` | 6 | -| `gpt-5.3-codex-api-preview` | 6 | -| `gpt-5.3-codex-api-preview-preambles` | 6 | -| `gpt-5.4` | 6 | -| `gpt-5.4-2026-03-05` | 6 | -| `gpt-5.4-mini` | 6 | -| `gpt-5.4-mini-2026-03-17` | 6 | -| `gpt-5.4-nano-2026-03-17` | 6 | +| `gpt-5.3-codex` | 1.75 | +| `gpt-5.3-codex-api-preview` | 1.75 | +| `gpt-5.3-codex-api-preview-preambles` | 1.75 | +| `gpt-5.4` | 2.5 | +| `gpt-5.4-2026-03-05` | 2.5 | +| `gpt-5.4-mini` | 0.75 | +| `gpt-5.4-mini-2026-03-17` | 0.75 | +| `gpt-5.4-nano-2026-03-17` | 0.2 | | `gpt-5.4-pro` | 6 | | `gpt-5.4-pro-2026-03-05` | 6 | -| `gpt-5.5` | 57 | -| `gpt-5.5-2026-04-23` | 57 | +| `gpt-5.5` | 5 | +| `gpt-5.5-2026-04-23` | 5 | | `gpt-5.5-pro` | 2 | | `gpt-5.5-pro-2026-04-23` | 2 | @@ -213,8 +213,8 @@ Before per-model multipliers are applied, raw token counts are weighted by token | Model | Multiplier | |-------|-----------| -| `gemini-2.5-pro` | 1 | -| `gemini-2.5-pro-preview-tts` | 1 | +| `gemini-2.5-pro` | 1.25 | +| `gemini-2.5-pro-preview-tts` | 1.25 | | `gemini-2.5-flash` | 0.2 | | `gemini-2.5-flash-native-audio-latest` | 0.2 | | `gemini-2.5-flash-native-audio-preview-09-2025` | 0.2 | @@ -231,19 +231,19 @@ Before per-model multipliers are applied, raw token counts are weighted by token | `gemini-flash-latest` | 0.2 | | `gemini-flash-lite-latest` | 0.1 | | `gemini-pro-latest` | 1 | -| `gemini-3-flash-preview` | 0.33 | +| `gemini-3-flash-preview` | 0.5 | | `gemini-3-pro-preview` | 6 | | `gemini-3-pro-image` | 6 | | `gemini-3-pro-image-preview` | 6 | -| `gemini-3.1-pro-preview` | 6 | -| `gemini-3.1-pro-preview-customtools` | 6 | +| `gemini-3.1-pro-preview` | 2 | +| `gemini-3.1-pro-preview-customtools` | 2 | | `gemini-3.1-flash-live-preview` | 0.1 | | `gemini-3.1-flash-lite` | 0.1 | | `gemini-3.1-flash-lite-preview` | 0.1 | | `gemini-3.1-flash-image` | 0.33 | | `gemini-3.1-flash-image-preview` | 0.33 | | `gemini-3.1-flash-tts-preview` | 0.1 | -| `gemini-3.5-flash` | 14 | +| `gemini-3.5-flash` | 1.5 | | `gemini-2.5-computer-use-preview` | 0.2 | | `gemini-2.5-computer-use-preview-10-2025` | 0.2 | | `gemini-robotics-er-1.5-preview` | 0.2 | @@ -258,8 +258,8 @@ Before per-model multipliers are applied, raw token counts are weighted by token | `deep-research-max-preview-04-2026` | 1 | | `deep-research-preview-04-2026` | 1 | | `deep-research-pro-preview-12-2025` | 1 | -| `MAI-Code-1-Flash` | 0.33 | +| `MAI-Code-1-Flash` | 0.75 | | `gemma-4-26b-a4b-it` | 0.1 | | `gemma-4-31b-it` | 0.2 | | `grok-code-fast-1` | 0.33 | -| `raptor-mini` | 0.33 | +| `raptor-mini` | 0.25 | diff --git a/pkg/cli/data/model_multipliers.json b/pkg/cli/data/model_multipliers.json index 7842ba149e2..171e436920c 100644 --- a/pkg/cli/data/model_multipliers.json +++ b/pkg/cli/data/model_multipliers.json @@ -1,6 +1,6 @@ { "version": "1", - "description": "Effective Tokens (ET) computation data per the gh-aw Effective Tokens Specification v0.2.0. Token class weights are applied first to normalize across token classes, then the per-model multiplier scales the result relative to the reference model. The registry keeps complete model history; entries are removed only by explicit manual deletion.", + "description": "Effective Tokens (ET) computation data per the gh-aw Effective Tokens Specification v0.2.0. Token class weights are applied first to normalize across token classes, then the per-model multiplier scales the result relative to the reference model. Multipliers for models listed on https://docs.github.com/en/copilot/reference/copilot-billing/models-and-pricing are derived from the input token price ($1 USD per 1M tokens = 1x multiplier). The registry keeps complete model history; entries are removed only by explicit manual deletion.", "reference_model": "claude-sonnet-4.5", "token_class_weights": { "input": 1.0, @@ -10,18 +10,18 @@ "cache_write": 1.0 }, "multipliers": { - "claude-haiku-4-5": 0.33, - "claude-haiku-4.5": 0.33, - "claude-haiku-4-5-20251001": 0.33, + "claude-haiku-4-5": 1.0, + "claude-haiku-4.5": 1.0, + "claude-haiku-4-5-20251001": 1.0, "claude-3-5-haiku": 0.1, "claude-3-haiku": 0.1, - "claude-sonnet-4": 1.0, - "claude-sonnet-4-20250514": 1.0, - "claude-sonnet-4-5": 6.0, - "claude-sonnet-4.5": 6.0, - "claude-sonnet-4-5-20250929": 6.0, - "claude-sonnet-4-6": 9.0, - "claude-sonnet-4.6": 9.0, + "claude-sonnet-4": 3.0, + "claude-sonnet-4-20250514": 3.0, + "claude-sonnet-4-5": 3.0, + "claude-sonnet-4.5": 3.0, + "claude-sonnet-4-5-20250929": 3.0, + "claude-sonnet-4-6": 3.0, + "claude-sonnet-4.6": 3.0, "claude-3-5-sonnet": 1.0, "claude-3-7-sonnet": 1.0, "claude-3-sonnet": 1.0, @@ -29,16 +29,16 @@ "claude-opus-4-20250514": 5.0, "claude-opus-4-1": 5.0, "claude-opus-4-1-20250805": 5.0, - "claude-opus-4-5": 15.0, - "claude-opus-4-5-20251101": 15.0, - "claude-opus-4-6": 27.0, - "claude-opus-4-7": 27.0, - "claude-opus-4-8": 27.0, - "claude-opus-4.5": 15.0, - "claude-opus-4.6": 27.0, - "claude-opus-4.6-fast": 27.0, - "claude-opus-4.7": 27.0, - "claude-opus-4.8": 27.0, + "claude-opus-4-5": 5.0, + "claude-opus-4-5-20251101": 5.0, + "claude-opus-4-6": 5.0, + "claude-opus-4-7": 5.0, + "claude-opus-4-8": 5.0, + "claude-opus-4.5": 5.0, + "claude-opus-4.6": 5.0, + "claude-opus-4.6-fast": 5.0, + "claude-opus-4.7": 5.0, + "claude-opus-4.8": 5.0, "claude-3-5-opus": 5.0, "claude-3-opus": 5.0, "gpt-4o-2024-05-13": 0.33, @@ -60,8 +60,8 @@ "gpt-5-search-api": 1.0, "gpt-5-search-api-2025-10-14": 1.0, "gpt-5-chat-latest": 1.0, - "gpt-5-mini": 0.33, - "gpt-5-mini-2025-08-07": 0.33, + "gpt-5-mini": 0.25, + "gpt-5-mini-2025-08-07": 0.25, "gpt-5-nano": 0.05, "gpt-5-nano-2025-08-07": 0.05, "gpt-5-pro": 2.0, @@ -74,25 +74,25 @@ "gpt-5.1-codex-mini": 0.33, "gpt-5.1-codex-max": 3.0, "gpt-5.1-codex-max-customsummarizer": 3.0, - "gpt-5.2": 3.0, - "gpt-5.2-2025-12-11": 3.0, - "gpt-5.2-chat-latest": 3.0, - "gpt-5.2-codex": 3.0, + "gpt-5.2": 1.75, + "gpt-5.2-2025-12-11": 1.75, + "gpt-5.2-chat-latest": 1.75, + "gpt-5.2-codex": 1.75, "gpt-5.2-pro": 3.0, "gpt-5.2-pro-2025-12-11": 3.0, "gpt-5.3-chat-latest": 3.0, - "gpt-5.3-codex": 6.0, - "gpt-5.3-codex-api-preview": 6.0, - "gpt-5.3-codex-api-preview-preambles": 6.0, - "gpt-5.4": 6.0, - "gpt-5.4-2026-03-05": 6.0, - "gpt-5.4-mini": 6.0, - "gpt-5.4-mini-2026-03-17": 6.0, - "gpt-5.4-nano-2026-03-17": 6.0, + "gpt-5.3-codex": 1.75, + "gpt-5.3-codex-api-preview": 1.75, + "gpt-5.3-codex-api-preview-preambles": 1.75, + "gpt-5.4": 2.5, + "gpt-5.4-2026-03-05": 2.5, + "gpt-5.4-mini": 0.75, + "gpt-5.4-mini-2026-03-17": 0.75, + "gpt-5.4-nano-2026-03-17": 0.2, "gpt-5.4-pro": 6.0, "gpt-5.4-pro-2026-03-05": 6.0, - "gpt-5.5": 57.0, - "gpt-5.5-2026-04-23": 57.0, + "gpt-5.5": 5.0, + "gpt-5.5-2026-04-23": 5.0, "gpt-5.5-pro": 2.0, "gpt-5.5-pro-2026-04-23": 2.0, "o1": 3.0, @@ -112,8 +112,8 @@ "o4-mini-2025-04-16": 0.5, "o4-mini-deep-research": 0.5, "o4-mini-deep-research-2025-06-26": 0.5, - "gemini-2.5-pro": 1.0, - "gemini-2.5-pro-preview-tts": 1.0, + "gemini-2.5-pro": 1.25, + "gemini-2.5-pro-preview-tts": 1.25, "gemini-2.5-flash": 0.2, "gemini-2.5-flash-native-audio-latest": 0.2, "gemini-2.5-flash-native-audio-preview-09-2025": 0.2, @@ -130,19 +130,19 @@ "gemini-flash-latest": 0.2, "gemini-flash-lite-latest": 0.1, "gemini-pro-latest": 1.0, - "gemini-3-flash-preview": 0.33, + "gemini-3-flash-preview": 0.5, "gemini-3-pro-preview": 6.0, "gemini-3-pro-image": 6.0, "gemini-3-pro-image-preview": 6.0, - "gemini-3.1-pro-preview": 6.0, - "gemini-3.1-pro-preview-customtools": 6.0, + "gemini-3.1-pro-preview": 2.0, + "gemini-3.1-pro-preview-customtools": 2.0, "gemini-3.1-flash-live-preview": 0.1, "gemini-3.1-flash-lite": 0.1, "gemini-3.1-flash-lite-preview": 0.1, "gemini-3.1-flash-image": 0.33, "gemini-3.1-flash-image-preview": 0.33, "gemini-3.1-flash-tts-preview": 0.1, - "gemini-3.5-flash": 14.0, + "gemini-3.5-flash": 1.5, "antigravity-preview-05-2026": 1.0, "nano-banana-pro-preview": 0.2, "gemini-2.5-computer-use-preview": 0.2, @@ -152,10 +152,10 @@ "deep-research-max-preview-04-2026": 1.0, "deep-research-preview-04-2026": 1.0, "deep-research-pro-preview-12-2025": 1.0, - "MAI-Code-1-Flash": 0.33, + "MAI-Code-1-Flash": 0.75, "gemma-4-26b-a4b-it": 0.1, "gemma-4-31b-it": 0.2, "grok-code-fast-1": 0.33, - "raptor-mini": 0.33 + "raptor-mini": 0.25 } } diff --git a/pkg/cli/effective_tokens_test.go b/pkg/cli/effective_tokens_test.go index 396ba885591..8946b2fb83a 100644 --- a/pkg/cli/effective_tokens_test.go +++ b/pkg/cli/effective_tokens_test.go @@ -47,7 +47,7 @@ func TestResolveEffectiveWeightsCustomMultipliers(t *testing.T) { assert.InDelta(t, 2.5, multipliers["my-custom-model"], 1e-9, "custom model multiplier") assert.InDelta(t, 1.5, multipliers["claude-sonnet-4.5"], 1e-9, "overridden model multiplier") // Built-in models not mentioned in custom should remain - assert.InDelta(t, 0.33, multipliers["claude-haiku-4.5"], 1e-9, "unmodified built-in multiplier") + assert.InDelta(t, 1.0, multipliers["claude-haiku-4.5"], 1e-9, "unmodified built-in multiplier") // Class weights unchanged when not specified assert.InDelta(t, 4.0, classWeights.Output, 1e-9, "output weight unchanged") } @@ -75,12 +75,12 @@ func TestModelMultipliersInventoryUpdate20260510(t *testing.T) { initMultipliers() require.NotNil(t, loadedMultipliers, "multipliers should be loaded from embedded JSON") - assert.InDelta(t, 6.0, loadedMultipliers["gpt-5.4"], 1e-9, "gpt-5.4 should use updated multiplier") - assert.InDelta(t, 6.0, loadedMultipliers["gpt-5.4-mini"], 1e-9, "gpt-5.4-mini should use updated multiplier") + assert.InDelta(t, 2.5, loadedMultipliers["gpt-5.4"], 1e-9, "gpt-5.4 should use updated multiplier") + assert.InDelta(t, 0.75, loadedMultipliers["gpt-5.4-mini"], 1e-9, "gpt-5.4-mini should use updated multiplier") assert.InDelta(t, 6.0, loadedMultipliers["gpt-5.4-pro"], 1e-9, "gpt-5.4-pro should use updated multiplier") - assert.InDelta(t, 27.0, loadedMultipliers["claude-opus-4.6"], 1e-9, "claude-opus-4.6 should use updated multiplier") + assert.InDelta(t, 5.0, loadedMultipliers["claude-opus-4.6"], 1e-9, "claude-opus-4.6 should use updated multiplier") assert.InDelta(t, 0.1, loadedMultipliers["gemini-3.1-flash-lite"], 1e-9, "gemini-3.1-flash-lite should be present") - assert.InDelta(t, 6.0, loadedMultipliers["gemini-3.1-pro-preview-customtools"], 1e-9, "gemini-3.1-pro-preview-customtools should be present") + assert.InDelta(t, 2.0, loadedMultipliers["gemini-3.1-pro-preview-customtools"], 1e-9, "gemini-3.1-pro-preview-customtools should be present") assert.InDelta(t, 0.2, loadedMultipliers["gemini-2.5-computer-use-preview-10-2025"], 1e-9, "gemini-2.5-computer-use-preview-10-2025 should be present") assert.InDelta(t, 0.33, loadedMultipliers["grok-code-fast-1"], 1e-9, "grok-code-fast-1 should be present") assert.InDelta(t, 1.0, loadedMultipliers["deep-research-max-preview-04-2026"], 1e-9, "deep-research-max-preview-04-2026 should be present") @@ -92,13 +92,13 @@ func TestModelMultipliersInventoryUpdate20260517(t *testing.T) { require.NotNil(t, loadedMultipliers, "multipliers should be loaded from embedded JSON") assert.InDelta(t, 1.0, loadedMultipliers["gpt-5-2025-08-07"], 1e-9, "gpt-5-2025-08-07 should be present") - assert.InDelta(t, 3.0, loadedMultipliers["gpt-5.2-chat-latest"], 1e-9, "gpt-5.2-chat-latest should be present") - assert.InDelta(t, 6.0, loadedMultipliers["gpt-5.3-codex-api-preview"], 1e-9, "gpt-5.3-codex-api-preview should be present") - assert.InDelta(t, 57.0, loadedMultipliers["gpt-5.5-2026-04-23"], 1e-9, "gpt-5.5-2026-04-23 should match documented multiplier") + assert.InDelta(t, 1.75, loadedMultipliers["gpt-5.2-chat-latest"], 1e-9, "gpt-5.2-chat-latest should be present") + assert.InDelta(t, 1.75, loadedMultipliers["gpt-5.3-codex-api-preview"], 1e-9, "gpt-5.3-codex-api-preview should be present") + assert.InDelta(t, 5.0, loadedMultipliers["gpt-5.5-2026-04-23"], 1e-9, "gpt-5.5-2026-04-23 should match documented multiplier") assert.InDelta(t, 3.0, loadedMultipliers["o3-deep-research-2025-06-26"], 1e-9, "o3-deep-research-2025-06-26 should be present") assert.InDelta(t, 0.5, loadedMultipliers["o4-mini-deep-research-2025-06-26"], 1e-9, "o4-mini-deep-research-2025-06-26 should be present") assert.InDelta(t, 0.2, loadedMultipliers["gemini-2.5-flash-native-audio-preview-12-2025"], 1e-9, "gemini-2.5-flash-native-audio-preview-12-2025 should be present") - assert.InDelta(t, 1.0, loadedMultipliers["gemini-2.5-pro-preview-tts"], 1e-9, "gemini-2.5-pro-preview-tts should be present") + assert.InDelta(t, 1.25, loadedMultipliers["gemini-2.5-pro-preview-tts"], 1e-9, "gemini-2.5-pro-preview-tts should be present") assert.InDelta(t, 0.1, loadedMultipliers["gemini-2.0-flash-lite-001"], 1e-9, "gemini-2.0-flash-lite-001 should be present") } @@ -117,7 +117,7 @@ func TestModelMultipliersInventoryUpdate20260520(t *testing.T) { initMultipliers() require.NotNil(t, loadedMultipliers, "multipliers should be loaded from embedded JSON") - assert.InDelta(t, 14.0, loadedMultipliers["gemini-3.5-flash"], 1e-9, "gemini-3.5-flash should use the documented premium multiplier") + assert.InDelta(t, 1.5, loadedMultipliers["gemini-3.5-flash"], 1e-9, "gemini-3.5-flash should use the documented multiplier") } func TestModelMultipliersInventoryUpdate20260521(t *testing.T) { @@ -130,11 +130,11 @@ func TestModelMultipliersInventoryUpdate20260521(t *testing.T) { assert.InDelta(t, 0.33, loadedMultipliers["gpt-5.1-codex-mini"], 1e-9, "gpt-5.1-codex-mini should match documented multiplier") assert.InDelta(t, 3.0, loadedMultipliers["gpt-5.2-pro"], 1e-9, "gpt-5.2-pro should match documented multiplier") assert.InDelta(t, 3.0, loadedMultipliers["gpt-5.2-pro-2025-12-11"], 1e-9, "gpt-5.2-pro-2025-12-11 should match documented multiplier") - assert.InDelta(t, 6.0, loadedMultipliers["gpt-5.4-nano-2026-03-17"], 1e-9, "gpt-5.4-nano-2026-03-17 should match documented multiplier") + assert.InDelta(t, 0.2, loadedMultipliers["gpt-5.4-nano-2026-03-17"], 1e-9, "gpt-5.4-nano-2026-03-17 should match documented multiplier") assert.InDelta(t, 6.0, loadedMultipliers["gpt-5.4-pro-2026-03-05"], 1e-9, "gpt-5.4-pro-2026-03-05 should match documented multiplier") - assert.InDelta(t, 0.33, loadedMultipliers["gemini-3-flash-preview"], 1e-9, "gemini-3-flash-preview should be present with official billing multiplier") + assert.InDelta(t, 0.5, loadedMultipliers["gemini-3-flash-preview"], 1e-9, "gemini-3-flash-preview should be present with official billing multiplier") assert.InDelta(t, 6.0, loadedMultipliers["gemini-3-pro-preview"], 1e-9, "gemini-3-pro-preview should be present with official billing multiplier") - assert.InDelta(t, 6.0, loadedMultipliers["gemini-3.1-pro-preview"], 1e-9, "gemini-3.1-pro-preview should be present with official billing multiplier") + assert.InDelta(t, 2.0, loadedMultipliers["gemini-3.1-pro-preview"], 1e-9, "gemini-3.1-pro-preview should be present with official billing multiplier") assert.NotContains(t, loadedMultipliers, "gemini-3-flash", "gemini-3-flash should not be present when only preview variant is defined") assert.NotContains(t, loadedMultipliers, "gemini-3-pro", "gemini-3-pro should not be present when only preview variant is defined") assert.NotContains(t, loadedMultipliers, "gemini-3.1-pro", "gemini-3.1-pro should not be present when only preview variant is defined") @@ -145,7 +145,7 @@ func TestModelMultipliersInventoryUpdate20260525(t *testing.T) { initMultipliers() require.NotNil(t, loadedMultipliers, "multipliers should be loaded from embedded JSON") - assert.InDelta(t, 27.0, loadedMultipliers["claude-opus-4-7"], 1e-9, "claude-opus-4-7 should match claude-opus-4.7 multiplier") + assert.InDelta(t, 5.0, loadedMultipliers["claude-opus-4-7"], 1e-9, "claude-opus-4-7 should match claude-opus-4.7 multiplier") assert.InDelta(t, 0.33, loadedMultipliers["gpt-4o-2024-05-13"], 1e-9, "gpt-4o-2024-05-13 should match gpt-4o multiplier") assert.InDelta(t, 0.33, loadedMultipliers["gpt-4o-2024-08-06"], 1e-9, "gpt-4o-2024-08-06 should match gpt-4o multiplier") assert.InDelta(t, 0.33, loadedMultipliers["gpt-4o-2024-11-20"], 1e-9, "gpt-4o-2024-11-20 should match gpt-4o multiplier") @@ -161,12 +161,12 @@ func TestModelMultipliersInventoryUpdate20260530(t *testing.T) { initMultipliers() require.NotNil(t, loadedMultipliers, "multipliers should be loaded from embedded JSON") - assert.InDelta(t, 27.0, loadedMultipliers["claude-opus-4-7"], 1e-9, "claude-opus-4-7 should match documented multiplier") - assert.InDelta(t, 57.0, loadedMultipliers["gpt-5.5"], 1e-9, "gpt-5.5 should match the documented multiplier") - assert.InDelta(t, 57.0, loadedMultipliers["gpt-5.5-2026-04-23"], 1e-9, "gpt-5.5-2026-04-23 should match the documented multiplier") - assert.InDelta(t, 27.0, loadedMultipliers["claude-opus-4-8"], 1e-9, "claude-opus-4-8 should be present in current registry") - assert.InDelta(t, 27.0, loadedMultipliers["claude-opus-4.7"], 1e-9, "claude-opus-4.7 alias should be present in current registry") - assert.InDelta(t, 27.0, loadedMultipliers["claude-opus-4.8"], 1e-9, "claude-opus-4.8 alias should be present in current registry") + assert.InDelta(t, 5.0, loadedMultipliers["claude-opus-4-7"], 1e-9, "claude-opus-4-7 should match documented multiplier") + assert.InDelta(t, 5.0, loadedMultipliers["gpt-5.5"], 1e-9, "gpt-5.5 should match the documented multiplier") + assert.InDelta(t, 5.0, loadedMultipliers["gpt-5.5-2026-04-23"], 1e-9, "gpt-5.5-2026-04-23 should match the documented multiplier") + assert.InDelta(t, 5.0, loadedMultipliers["claude-opus-4-8"], 1e-9, "claude-opus-4-8 should be present in current registry") + assert.InDelta(t, 5.0, loadedMultipliers["claude-opus-4.7"], 1e-9, "claude-opus-4.7 alias should be present in current registry") + assert.InDelta(t, 5.0, loadedMultipliers["claude-opus-4.8"], 1e-9, "claude-opus-4.8 alias should be present in current registry") } func TestModelMultipliersInventoryUpdate20260603(t *testing.T) { @@ -174,8 +174,8 @@ func TestModelMultipliersInventoryUpdate20260603(t *testing.T) { initMultipliers() require.NotNil(t, loadedMultipliers, "multipliers should be loaded from embedded JSON") - assert.InDelta(t, 27.0, loadedMultipliers["claude-opus-4.6-fast"], 1e-9, "claude-opus-4.6-fast should match inferred opus 4.6 multiplier") - assert.InDelta(t, 0.33, loadedMultipliers["mai-code-1-flash"], 1e-9, "MAI-Code-1-Flash should match documented billing multiplier") + assert.InDelta(t, 5.0, loadedMultipliers["claude-opus-4.6-fast"], 1e-9, "claude-opus-4.6-fast should match documented opus 4.6 multiplier") + assert.InDelta(t, 0.75, loadedMultipliers["mai-code-1-flash"], 1e-9, "MAI-Code-1-Flash should match documented billing multiplier") } func TestModelMultipliersInventoryUpdate20260602(t *testing.T) { @@ -266,12 +266,12 @@ func TestPopulateEffectiveTokensWithCustomWeights(t *testing.T) { require.NotNil(t, customModel, "custom model should be present") assert.Equal(t, 5400, customModel.EffectiveTokens, "custom model effective tokens at 3.0x") - // claude-sonnet-4.5: base = 1.0*500 + 4.0*100 = 900; ET = 6.0 * 900 = 5400 + // claude-sonnet-4.5: base = 1.0*500 + 4.0*100 = 900; ET = 3.0 * 900 = 2700 sonnet := summary.ByModel["claude-sonnet-4.5"] require.NotNil(t, sonnet, "sonnet should be present") - assert.Equal(t, 5400, sonnet.EffectiveTokens, "sonnet effective tokens at 6x") + assert.Equal(t, 2700, sonnet.EffectiveTokens, "sonnet effective tokens at 3.0x") - assert.Equal(t, 10800, summary.TotalEffectiveTokens, "total = custom + sonnet") + assert.Equal(t, 8100, summary.TotalEffectiveTokens, "total = custom + sonnet") } func TestPopulateEffectiveTokensWithCustomWeightsNilSummary(t *testing.T) {