[BUG] Auto-update failure message appears persistently with no way to suppress it

Resolved 💬 4 comments Opened May 5, 2026 by ctrl-alt-vee Closed Jun 2, 2026

What's Wrong?

After some point in normal use, Claude Code began displaying the following banner on startup:

✗ Auto-update failed · Try claude doctor or npm i -g @anthropic-ai/claude-code

There is no way to suppress it. The settings schema has no field to disable auto-update checks — attempting to add "autoUpdates": false to settings.json produces a validation error (Unrecognized field: autoUpdates). The suggested remediation (npm i -g @anthropic-ai/claude-code) is not possible when Claude Code is installed in a read-only location (e.g. a Docker image or managed environment where the install path is intentionally immutable).

What Should Happen?

Either:

  • A settings field (e.g. "autoUpdates": false) to opt out of the update check entirely, or
  • The updater silently no-ops when the install path is not writable, rather than surfacing a banner with no actionable remediation.

Error Messages/Logs

✗ Auto-update failed · Try claude doctor or npm i -g @anthropic-ai/claude-code

Steps to Reproduce

  1. Install Claude Code globally via npm in a read-only location (e.g. baked into a Docker image).
  2. Start a Claude Code session.
  3. At some point the failure banner begins appearing on startup and cannot be dismissed or suppressed.

Is this a regression?

I don't know — the message was not present initially and appeared after some period of normal use.

Claude Code Version

2.1.126 (Claude Code)

Platform

Anthropic API

Operating System

Linux (container / read-only volume mount)

Terminal/Shell

Non-interactive/CI environment

Additional Information

The core issue is not whether the update check fires on every startup, but that once it starts failing there is no supported way to silence it. In containerised or managed deployments the install path is intentionally immutable, so the failure is permanent and the banner becomes unremediable noise.

View original on GitHub ↗

This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗