diff --git a/src/utils/__tests__/claude-settings.test.ts b/src/utils/__tests__/claude-settings.test.ts index 0630ba2a..1b858af5 100644 --- a/src/utils/__tests__/claude-settings.test.ts +++ b/src/utils/__tests__/claude-settings.test.ts @@ -351,6 +351,19 @@ describe('installStatusLine refreshInterval', () => { await installStatusLine({ commandMode: 'auto-npx', supportsRefreshInterval: true }); expect(readInstalledRefreshInterval()).toBe(5); }); + + it('should preserve existing refreshInterval when version is unsupported', async () => { + writeRawClaudeSettings(JSON.stringify({ + statusLine: { + type: 'command', + command: CCSTATUSLINE_COMMANDS.NPM, + padding: 0, + refreshInterval: 5 + } + })); + await installStatusLine({ commandMode: 'auto-npx', supportsRefreshInterval: false }); + expect(readInstalledRefreshInterval()).toBe(5); + }); }); describe('refreshInterval', () => { diff --git a/src/utils/claude-settings.ts b/src/utils/claude-settings.ts index 8aaecfce..5ab6f7c0 100644 --- a/src/utils/claude-settings.ts +++ b/src/utils/claude-settings.ts @@ -421,9 +421,13 @@ export async function installStatusLine({ padding: 0 }; - // Only set refreshInterval if Claude Code version supports it (>=2.1.97) - if (supportsRefreshInterval) { - settings.statusLine.refreshInterval = existingRefreshInterval ?? 10; + // Default refreshInterval only on supported versions (>=2.1.97), but always keep an + // existing value - the version probe also returns false when `claude --version` fails. + const refreshInterval = supportsRefreshInterval + ? (existingRefreshInterval ?? 10) + : existingRefreshInterval; + if (refreshInterval !== undefined) { + settings.statusLine.refreshInterval = refreshInterval; } await saveClaudeSettings(settings);