fix: scale context meter to usable window respecting CLAUDE_CODE_AUTO_COMPACT_WINDOW (#2219)
The autocompact buffer percentage was hardcoded to 16.5%. Users who set CLAUDE_CODE_AUTO_COMPACT_WINDOW to a custom token count (e.g. 400000 on a 1M-context model) saw a miscalibrated context meter and incorrect warning thresholds in the context-monitor hook (which reads used_pct from the bridge file the statusline writes). Now reads CLAUDE_CODE_AUTO_COMPACT_WINDOW from the hook env and computes: buffer_pct = acw_tokens / total_tokens * 100 Defaults to 16.5% when the var is absent or zero, preserving existing behavior. Also applies the renameDecimalPhases zero-padding fix for clean CI. Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -124,9 +124,15 @@ function runStatusline() {
|
||||
const remaining = data.context_window?.remaining_percentage;
|
||||
|
||||
// Context window display (shows USED percentage scaled to usable context)
|
||||
// Claude Code reserves ~16.5% for autocompact buffer, so usable context
|
||||
// is 83.5% of the total window. We normalize to show 100% at that point.
|
||||
const AUTO_COMPACT_BUFFER_PCT = 16.5;
|
||||
// Claude Code reserves a buffer for autocompact. By default this is ~16.5%
|
||||
// of the total window, but users can override it via CLAUDE_CODE_AUTO_COMPACT_WINDOW
|
||||
// (a token count). When the env var is set, compute the buffer % dynamically so
|
||||
// the meter correctly reflects early-compaction configurations (#2219).
|
||||
const totalCtx = data.context_window?.total_tokens || 1_000_000;
|
||||
const acw = parseInt(process.env.CLAUDE_CODE_AUTO_COMPACT_WINDOW || '0', 10);
|
||||
const AUTO_COMPACT_BUFFER_PCT = acw > 0
|
||||
? Math.min(100, (acw / totalCtx) * 100)
|
||||
: 16.5;
|
||||
let ctx = '';
|
||||
if (remaining != null) {
|
||||
// Normalize: subtract buffer from remaining, scale to usable range
|
||||
|
||||
Reference in New Issue
Block a user