Skip to content

[copilot-token-optimizer] Architecture Guardian: reduce 47-turn analysis via bash pre-step consolidation #28124

@github-actions

Description

@github-actions

Target Workflow

Architecture Guardian (architecture-guardian.md) — selected as highest-token eligible workflow (1.97M tokens, not optimized in the last 14 days).

Analysis Period

  • Window: 2026-04-23 (7-day window, 1 run available)
  • Run analyzed: §24842109769

Token Profile

Metric Value
Total tokens 1,969,440
Effective tokens 2,197,150
Avg tokens/run 1,969,440
Total turns 47
Avg turns/run 47
Cache efficiency 49.3%
Cache write tokens 0
Action minutes 9
Conclusion ✅ success

Agentic Assessments (from run classifier)

  • resource_heavy_for_domain (severity: high) — 47 turns for a local static-analysis task is excessive
  • partially_reducible (severity: low) — agentic_fraction=0.50 suggests ~50% of turns are data-gathering that could be deterministic

Ranked Recommendations

1. 🔴 Add a bash pre-step to collect all file metrics up front

Estimated savings: ~800K–1M tokens/run (40–50%)

The prompt instructs the agent to iterate file-by-file: run wc -l, grep -n, awk, and repeat for each changed file. With 47 turns at ~42K input tokens/turn (accumulated context), this is the dominant cost.

A single pre-step bash script can:

  1. Identify all changed .go/.js/.cjs files in the last 24 hours
  2. Run wc -l, grep -n "^func ", and export-count greps across all files at once
  3. Run go list ./... 2>&1 | grep -i "import cycle" once
  4. Write a structured JSON summary to /tmp/gh-aw/agent/arch-metrics.json

The agent then reads one file instead of running 20–30 individual shell commands, reducing turns from ~47 to ~15–20.

Concrete action: Add a steps: block in the workflow frontmatter with a bash pre-step that runs the full metric collection script.

Evidence: 47 turns, actuation_style=read_only, all outputs are analysis (no write actions), agentic_fraction=0.50.


2. 🟡 Remove the repos GitHub toolset

Estimated savings: ~30K–50K tokens/run (reduced tool-list context)

The workflow is configured with github: toolsets: [repos]. The entire analysis is performed with local bash commands (git log, wc, grep, awk, go list). No GitHub API reads are needed for local static analysis. With mount-as-clis: true, the gh CLI is available if needed.

Removing the toolset eliminates the tool-definition tokens injected into every request.

Concrete action: Remove the github: block from the tools: section (or replace with toolsets: []).

Evidence: 3 github_api_calls recorded for the run — these are likely the safe-output create_issue call and repo metadata lookups, not repos-toolset calls. The prompt never references GitHub API operations for analysis.


3. 🟡 Remove the edit tool from the tools list

Estimated savings: ~10K–20K tokens/run (tool schema injection)

The edit: tool is listed under tools:. The workflow's primary task (code analysis + issue creation) doesn't require editing files — only bash and safe-outputs are needed. edit is used only during workflow recompile (footer-workflow-recompile message), not in normal runs.

Concrete action: Remove edit: from the tools: section.

Evidence: No edit tool calls observed in run data. actuation_style=read_only.


4. 🟢 Simplify the per-violation AI suggestion step

Estimated savings: ~50K–100K tokens/run (reduced output + fewer turns)

Step 5 asks the agent to generate a "concise refactoring suggestion" for every BLOCKER and WARNING violation, including (1) what the violation is, (2) why it's a problem, and (3) a concrete plan. This produces verbose output and may require additional read turns to gather context for suggestions.

Concrete action: Replace per-violation narrative suggestions with a templated 2-line note: violation description + a single-sentence fix hint. Move the detailed architectural guidance to the issue body as boilerplate.

Evidence: 12,444 output tokens generated (vs typical ~5K for issue-creation workflows), 47 turns suggest multiple reasoning cycles per violation.


Supporting Data

Run token breakdown

Token type Count
Input tokens 1,956,996
Output tokens 12,444
Cache read tokens 1,903,775
Cache write tokens 0
Requests (turns) 47
Avg input/turn ~41,638

Behavior fingerprint

Dimension Value
Execution style exploratory
Tool breadth narrow
Actuation style read_only
Resource profile heavy
Agentic fraction 0.50

Configured tools

  • github: toolsets: [repos]
  • bash: git log/diff/show, find, wc, grep, cat, head, awk, sed, sort
  • edit:
  • safe-outputs: create-issue, noop

Caveats

  • Only 1 run available in the 7-day window (scheduled daily, weekdays only). Recommendations are based on structural prompt analysis supplemented by the run fingerprint.
  • The ~800K token savings estimate for recommendation rejig docs #1 is conservative — actual savings depend on the number of changed files per run. Runs with few changes (triggering early noop) will save proportionally less.
  • Cache write tokens = 0 in this run, which means the KV cache wasn't populated. This may be normal for the first run of the day or after a workflow change.

References:

Generated by Copilot Token Usage Optimizer · ● 989.3K ·

  • expires on Apr 30, 2026, 3:34 PM UTC

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions