claude-code - 💡(How to fix) Fix [BUG] claude update very slow

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Error Message

Error Messages/Logs

Code Example

$ time claude update
Current version: 2.1.114
Checking for updates to latest version...
Claude Code is up to date (2.1.114)
real    0m30.247s

---

the strace summary command I ran and its output:

$ awk 'match($0, /<[0-9.]+>$/) {
  dur = substr($0, RSTART+1, RLENGTH-2) + 0
  print dur "\t" $0
}' /tmp/claude-update2.trace | sort -rn | head -20
9.9e-05 51596 19:49:56.619725 recvfrom(18, "n\277\312_5\247\253\274\357\201#\3228\3143A\356BT\311\5\250\r\374\3444FY\270J\10\231"..., 524288, MSG_DONTWAIT, NULL, NULL) = 24852 <0.000099>
9.9e-05 51596 19:49:55.477304 recvfrom(18, "\t\277rL\3540\373\"i\206\307\274\356\35o\307\367&\200ND\232\312\231\260}!\5>\213_~"..., 524288, MSG_DONTWAIT, NULL, NULL) = 44472 <0.000099>
9.9e-05 51596 19:49:54.917806 recvfrom(18, "\37\323^\206\312\250AV\2263\371\216A\211\301\272\271\260\236>\3374M\224\204\323\300\311\353dCd"..., 524288, MSG_DONTWAIT, NULL, NULL) = 7848 <0.000099>
9.9e-05 51596 19:49:52.040078 recvfrom(18, "\6c[lh\260wk\274V\346T\222\247\314\2137\315\327\357\217@Kf\314\201|\232\254\301t\333"..., 524288, MSG_DONTWAIT, NULL, NULL) = 3924 <0.000099>
9.9e-05 51596 19:49:50.239335 recvfrom(18, "\3501\272\3626\327\27\\\302W/\3100\374\220\375Q\252\n\2400\363\204\262\360~\270`52\25\333"..., 524288, MSG_DONTWAIT, NULL, NULL) = 62784 <0.000099>
9.9e-05 51596 19:49:48.871225 recvfrom(18, "\357\257\267\367\33 M\277\226\344@\332Xf\26\333\244V8\322\324\214K\214\300\313\200Zf\201\331\236"..., 524288, MSG_DONTWAIT, NULL, NULL) = 18312 <0.000099>
9.9e-05 51596 19:49:44.972496 recvfrom(18, "v\314\342\355\314\365\216\250\30K^\4\327\232+\304\336Lz\223g\1\202\201]t\373\256\230\2430\307"..., 524288, MSG_DONTWAIT, NULL, NULL) = 13080 <0.000099>
9.9e-05 51596 19:49:39.323200 recvfrom(18, "\2\371\33\240\331\362~\371\372\340\354\16f\237\201``qRZh&C\373W/\336\342\7\362\257\210"..., 524288, MSG_DONTWAIT, NULL, NULL) = 60168 <0.000099>
9.9e-05 51596 19:49:38.513445 recvfrom(18, "\221\23\3444\212\10\204\230\202\320\213\364\204\3253\312\304\267L\347\251q]\251Tm\322\367v\231\354%"..., 524288, MSG_DONTWAIT, NULL, NULL) = 18312 <0.000099>
9.9e-05 51596 19:49:37.584354 recvfrom(18, "\353\245:\231<\230l}\235\230\306\250\257\264\4S\267F<T\355\273\\B\31|Q1\261\251\360\373"..., 524288, MSG_DONTWAIT, NULL, NULL) = 70632 <0.000099>
9.9e-05 51596 19:49:36.431502 recvfrom(18, "\233hK1'\222\177VV\236\312\326\362\233iI\314%\7\373L\211\305Y\346\342M\326i${\342"..., 524288, MSG_DONTWAIT, NULL, NULL) = 1308 <0.000099>
9.9e-05 51596 19:49:33.872659 recvfrom(18, "u+*\256\216 \33\2W\300X\271\334\310;\308G\201\354\324\274\0 \351Y\331\t\333G\260#"..., 524288, MSG_DONTWAIT, NULL, NULL) = 36624 <0.000099>
9.9e-05 51596 19:49:33.318245 recvfrom(18, "\357\272\332\315\357\264\3\23\203\242\364\27\333\377\37M\216{\214I\27\251\37\373?8=\317\356\343\264\1"..., 524288, MSG_DONTWAIT, NULL, NULL) = 5232 <0.000099>
9.9e-05 51596 19:49:33.050977 recvfrom(18, "\257!]<\353\357\334\21\343\244\327\256V\316\247\16k\30z\277\3548_\206\264G\273B\223\304\356p"..., 524288, MSG_DONTWAIT, NULL, NULL) = 18312 <0.000099>
9.9e-05 51596 19:49:32.712606 recvfrom(18, "\325+\266\r_(Q\273\377\r\337]`\311\363\17\264\1m\34;\270T2\3641\272K\262o\253\255"..., 524288, MSG_DONTWAIT, NULL, NULL) = 7848 <0.000099>
9.9e-05 51596 19:49:31.166175 recvfrom(18, "\260\265D\362NYK\335\316\225n\235\375\353\24/.x_\247\264\203yj\272\305\25\213\376n\222N"..., 524288, MSG_DONTWAIT, NULL, NULL) = 71940 <0.000099>
9.9e-05 51596 19:49:28.952525 recvfrom(18, "\242Do\31x\302<N}C\22a\311\2033,?GS\240\326\262\20\0374\22\362\350\2526\223\236"..., 524288, MSG_DONTWAIT, NULL, NULL) = 34008 <0.000099>
9.9e-05 51596 19:49:28.106956 recvfrom(18, "\36\204\vawxfRZ\237\333\221\1\17z\230\375Wf\223\243#,\220\231s\224u\303\203\3459"..., 524288, MSG_DONTWAIT, NULL, NULL) = 18312 <0.000099>
9.8e-05 51596 19:49:54.789785 recvfrom(18, "@\255\35\t\273\3571\323v\217O\266\36R\302\312^\344\310\374\33\1Dq\273\342\220\330p\277\207\353"..., 524288, MSG_DONTWAIT, NULL, NULL) = 1308 <0.000098>
9.8e-05 51596 19:49:53.909199 recvfrom(18, "y\254\311\314H\256\334.\340\373rW\355b\30\375\306\347\340W\3748\33\1Cm\3331\317\254\253\243"..., 524288, MSG_DONTWAIT, NULL, NULL) = 32700 <0.000098>
RAW_BUFFERClick to expand / collapse

Preflight Checklist

  • I have searched existing issues and this hasn't been reported yet
  • This is a single bug report (please file separate reports for different bugs)
  • I am using the latest version of Claude Code

What's Wrong?

claude update downloads the full release tarball (~226 MB) even when already up-to-date Environment: WSL2 Ubuntu, native install, Claude Code 2.1.114, Config install method: native, Auto-update channel: latest Repro:

$ time claude update
Current version: 2.1.114
Checking for updates to latest version...
Claude Code is up to date (2.1.114)
real    0m30.247s

Diagnosis: strace shows ~226 MB received on the GCS socket across 6,915 reads during a no-op update check. Expected: a HEAD request or small metadata fetch to compare versions, followed by early exit. Actual: full tarball download, then "already up to date." Impact: 30s latency per manual update check on ~7 MB/s links. Silent bandwidth cost for metered connections. Linear in release size.

What Should Happen?

the command should not download that much data if claude code is uptodate.

Error Messages/Logs

the strace summary command I ran and its output:

$ awk 'match($0, /<[0-9.]+>$/) {
  dur = substr($0, RSTART+1, RLENGTH-2) + 0
  print dur "\t" $0
}' /tmp/claude-update2.trace | sort -rn | head -20
9.9e-05 51596 19:49:56.619725 recvfrom(18, "n\277\312_5\247\253\274\357\201#\3228\3143A\356BT\311\5\250\r\374\3444FY\270J\10\231"..., 524288, MSG_DONTWAIT, NULL, NULL) = 24852 <0.000099>
9.9e-05 51596 19:49:55.477304 recvfrom(18, "\t\277rL\3540\373\"i\206\307\274\356\35o\307\367&\200ND\232\312\231\260}!\5>\213_~"..., 524288, MSG_DONTWAIT, NULL, NULL) = 44472 <0.000099>
9.9e-05 51596 19:49:54.917806 recvfrom(18, "\37\323^\206\312\250AV\2263\371\216A\211\301\272\271\260\236>\3374M\224\204\323\300\311\353dCd"..., 524288, MSG_DONTWAIT, NULL, NULL) = 7848 <0.000099>
9.9e-05 51596 19:49:52.040078 recvfrom(18, "\6c[lh\260wk\274V\346T\222\247\314\2137\315\327\357\217@Kf\314\201|\232\254\301t\333"..., 524288, MSG_DONTWAIT, NULL, NULL) = 3924 <0.000099>
9.9e-05 51596 19:49:50.239335 recvfrom(18, "\3501\272\3626\327\27\\\302W/\3100\374\220\375Q\252\n\2400\363\204\262\360~\270`52\25\333"..., 524288, MSG_DONTWAIT, NULL, NULL) = 62784 <0.000099>
9.9e-05 51596 19:49:48.871225 recvfrom(18, "\357\257\267\367\33 M\277\226\344@\332Xf\26\333\244V8\322\324\214K\214\300\313\200Zf\201\331\236"..., 524288, MSG_DONTWAIT, NULL, NULL) = 18312 <0.000099>
9.9e-05 51596 19:49:44.972496 recvfrom(18, "v\314\342\355\314\365\216\250\30K^\4\327\232+\304\336Lz\223g\1\202\201]t\373\256\230\2430\307"..., 524288, MSG_DONTWAIT, NULL, NULL) = 13080 <0.000099>
9.9e-05 51596 19:49:39.323200 recvfrom(18, "\2\371\33\240\331\362~\371\372\340\354\16f\237\201``qRZh&C\373W/\336\342\7\362\257\210"..., 524288, MSG_DONTWAIT, NULL, NULL) = 60168 <0.000099>
9.9e-05 51596 19:49:38.513445 recvfrom(18, "\221\23\3444\212\10\204\230\202\320\213\364\204\3253\312\304\267L\347\251q]\251Tm\322\367v\231\354%"..., 524288, MSG_DONTWAIT, NULL, NULL) = 18312 <0.000099>
9.9e-05 51596 19:49:37.584354 recvfrom(18, "\353\245:\231<\230l}\235\230\306\250\257\264\4S\267F<T\355\273\\B\31|Q1\261\251\360\373"..., 524288, MSG_DONTWAIT, NULL, NULL) = 70632 <0.000099>
9.9e-05 51596 19:49:36.431502 recvfrom(18, "\233hK1'\222\177VV\236\312\326\362\233iI\314%\7\373L\211\305Y\346\342M\326i${\342"..., 524288, MSG_DONTWAIT, NULL, NULL) = 1308 <0.000099>
9.9e-05 51596 19:49:33.872659 recvfrom(18, "u+*\256\216 \33\2W\300X\271\334\310;\308G\201\354\324\274\0 \351Y\331\t\333G\260#"..., 524288, MSG_DONTWAIT, NULL, NULL) = 36624 <0.000099>
9.9e-05 51596 19:49:33.318245 recvfrom(18, "\357\272\332\315\357\264\3\23\203\242\364\27\333\377\37M\216{\214I\27\251\37\373?8=\317\356\343\264\1"..., 524288, MSG_DONTWAIT, NULL, NULL) = 5232 <0.000099>
9.9e-05 51596 19:49:33.050977 recvfrom(18, "\257!]<\353\357\334\21\343\244\327\256V\316\247\16k\30z\277\3548_\206\264G\273B\223\304\356p"..., 524288, MSG_DONTWAIT, NULL, NULL) = 18312 <0.000099>
9.9e-05 51596 19:49:32.712606 recvfrom(18, "\325+\266\r_(Q\273\377\r\337]`\311\363\17\264\1m\34;\270T2\3641\272K\262o\253\255"..., 524288, MSG_DONTWAIT, NULL, NULL) = 7848 <0.000099>
9.9e-05 51596 19:49:31.166175 recvfrom(18, "\260\265D\362NYK\335\316\225n\235\375\353\24/.x_\247\264\203yj\272\305\25\213\376n\222N"..., 524288, MSG_DONTWAIT, NULL, NULL) = 71940 <0.000099>
9.9e-05 51596 19:49:28.952525 recvfrom(18, "\242Do\31x\302<N}C\22a\311\2033,?GS\240\326\262\20\0374\22\362\350\2526\223\236"..., 524288, MSG_DONTWAIT, NULL, NULL) = 34008 <0.000099>
9.9e-05 51596 19:49:28.106956 recvfrom(18, "\36\204\vawxfRZ\237\333\221\1\17z\230\375Wf\223\243#,\220\231s\224u\303\203\3459"..., 524288, MSG_DONTWAIT, NULL, NULL) = 18312 <0.000099>
9.8e-05 51596 19:49:54.789785 recvfrom(18, "@\255\35\t\273\3571\323v\217O\266\36R\302\312^\344\310\374\33\1Dq\273\342\220\330p\277\207\353"..., 524288, MSG_DONTWAIT, NULL, NULL) = 1308 <0.000098>
9.8e-05 51596 19:49:53.909199 recvfrom(18, "y\254\311\314H\256\334.\340\373rW\355b\30\375\306\347\340W\3748\33\1Cm\3331\317\254\253\243"..., 524288, MSG_DONTWAIT, NULL, NULL) = 32700 <0.000098>

Steps to Reproduce

type claude update command in the windows terminal on my ubuntu WSL2 sysetem

Claude Model

None

Is this a regression?

I don't know

Last Working Version

No response

Claude Code Version

2.1.114

Platform

Anthropic API

Operating System

Ubuntu/Debian Linux

Terminal/Shell

VS Code integrated terminal

Additional Information

No response

extent analysis

TL;DR

The claude update command downloads the full release tarball even when the version is up-to-date, causing unnecessary bandwidth usage and latency.

Guidance

  • Investigate the claude update command's implementation to determine why it's downloading the full tarball instead of checking for updates using a HEAD request or small metadata fetch.
  • Review the strace output to identify the specific system calls responsible for the large data transfer.
  • Consider modifying the claude update command to use a more efficient update checking mechanism, such as a HEAD request or a small metadata fetch, to reduce bandwidth usage and latency.
  • Test the modified claude update command to ensure it correctly checks for updates without downloading the full tarball when the version is up-to-date.

Example

No code snippet is provided as the issue is related to the implementation of the claude update command, which is not shown in the issue body.

Notes

The issue may be related to the implementation of the claude update command or the Anthropic API, and further investigation is needed to determine the root cause.

Recommendation

Apply a workaround by modifying the claude update command to use a more efficient update checking mechanism, as the root cause of the issue is not immediately clear.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING