logoalt Hacker News

Claude Code CLI was broken

165 pointsby sneilan1last Wednesday at 8:25 PM167 commentsview on HN

Comments

lucideerlast Wednesday at 9:30 PM

At least this breakage is clear & obvious.

I did some testing of configuring Claude CLI sometime ago via .claude json config files - in particular I tested:

- defining MCP servers manually in config (instead of having the CLI auto add them)

- playing with various combinations of ’permissions` arrays

What I discovered was that Claude is not only vibe coded, but basic local logic around config reading seems to also work on the basis of "vibes".

- it seemed like different parts of the CLI codebase did or didn't adhere to the permissions arrays.

- at one point it told me it didn't have permission to read the .claude directory & as a result ran bash commands to search my entire filesystem looking for MCP server URLs for it to provide me with a list of available MCP servers

- when restricted to only be able to read from a working directory, at various points it told me I had denied it read permissions to that same working directory & also freely read from other directories on my system without prompting

- restricting webfetch permissions is extremely hit & miss (tested with Little Snitch in alert mode)

---

I have not reported any of the above as Github issues, nor do I intend to. I had a think about why I won't & it struck me that there's a funny dichotomy with AI tools:

1. all of the above are things the typical vibe coder stereotypes I've encountered simply do not really care deeply about

2. people that care about the above things are less likely to care enough about AI tools to commit their personal time to reporting & debugging these issues

There's bound to be exceptions to these stereotypes out there but I doubt there's sufficient numbers to make AI tooling good.

show 10 replies
songodongoyesterday at 2:58 AM

I have to chuckle that a bug like this happens after reading that other thread about the Claude Code creator running like 5 terminal agents and another 5-10 in the web UI.

We vibing out here.

show 3 replies
smcalast Wednesday at 8:41 PM

It's fixed as of nine minutes ago: https://github.com/anthropics/claude-code/pull/16686

show 6 replies
viraptorlast Wednesday at 8:53 PM

I'm surprised that they don't do an integration test in CI where they actually start the app. (Since that's all you need to catch it)

show 5 replies
habosayesterday at 3:18 PM

They really have “anthropics” not “anthropic” on GitHub? That’s a shame, it looks like typosquatting. If people are taught to trust that it’s easier to get them to download my evil OpenA1 package.

stevefan1999yesterday at 2:07 AM

What's funny to me is that the amount of "same here", "+1" comments are still prominent even if GitHub introduced an emoji system. It's like most people intentionally don't want to use that.

show 5 replies
phyrexlast Wednesday at 8:36 PM

workaround from the issue discussion:

```

  Problem: Claude Code 2.1.0 crashes with Invalid Version: 2.1.0 (2026-01-07) because the CHANGELOG.md format changed to include dates in version headers (e.g., ## 2.1.0 (2026-01-07)). The code parses these headers as object keys and tries to sort them using semver's .gt() function, which can't parse version strings with date suffixes.

  Affected functions: W37, gw0, and an unnamed function around line 3091 that fetches recent release notes.

  Fix: Wrap version strings with semver.coerce() before comparison. Run these 4 sed commands on cli.js:

  CLI_JS="$HOME/.nvm/versions/node/$(node -v)/lib/node_modules/@anthropic-ai/claude-code/cli.js"

  # Backup first
  cp "$CLI_JS" "$CLI_JS.backup"

  # Patch 1: Fix ve2.gt sort (recent release notes)
  sed -i 's/Object\.keys(B)\.sort((Y,J)=>ve2\.gt(Y,J,{loose:!0})?-1:1)/Object.keys(B).sort((Y,J)=>ve2.gt(ve2.coerce(Y),ve2.coerce(J),{loose:!0})?-1:1)/g' "$CLI_JS"

  # Patch 2: Fix gw0 sort
  sed -i 's/sort((G,Z)=>Wt\.gt(G,Z,{loose:!0})?1:-1)/sort((G,Z)=>Wt.gt(Wt.coerce(G),Wt.coerce(Z),{loose:!0})?1:-1)/g' "$CLI_JS"

  # Patch 3: Fix W37 filter
  sed -i 's/filter((\[J\])=>!Y||Wt\.gt(J,Y,{loose:!0}))/filter(([J])=>!Y||Wt.gt(Wt.coerce(J),Y,{loose:!0}))/g' "$CLI_JS"

  # Patch 4: Fix W37 sort
  sed -i 's/sort((\[J\],\[X\])=>Wt\.gt(J,X,{loose:!0})?-1:1)/sort(([J],[X])=>Wt.gt(Wt.coerce(J),Wt.coerce(X),{loose:!0})?-1:1)/g' "$CLI_JS"

  Note: If installed via different method, adjust CLI_JS path accordingly (e.g., /usr/lib/node_modules/@anthropic-ai/claude-code/cli.js).
```
show 3 replies
bfeynmanlast Wednesday at 11:14 PM

this is funny in context of their main dev advocate constantly bragging about how claude writes all of his code for claude code cli....

show 1 reply
denysvitalilast Wednesday at 9:20 PM

The good news is that they broke their usage tracking as well, so you can use Opus without any rate limit!

show 2 replies
omnicognatelast Wednesday at 9:27 PM

As I commented [1] on the earlier Claude Code post, there's an issue [2] that has the following comment:

> While we are always monitoring instances of this error and and looking to fix them, it's unlikely we will ever completely eliminate it due to how tricky concurrency problems are in general.

This is an extraordinary admission. It is perfectly possible (easy, even, relative to many programming challenges) to write a tool like this without getting the design so wrong that the same bug keeps happening in so many different ways that you have to publicly admit you're powerless to fix them all.

[1] https://news.ycombinator.com/item?id=46523740

[2] https://github.com/anthropics/claude-code/issues/6836

brunoolivlast Wednesday at 9:20 PM

Even if it broke after some sort of vibe coding session, the fact that we’re now pushing these tools to their limits are what’s allowing Anthropic and Boris getting a lot of useful insights to improve the models and experience further! So yeah, buckle up, bumps expected

show 1 reply
mvdtnzlast Wednesday at 9:02 PM

I'm not usually one to pile on to a developer for releasing a bug but this is pretty special. The nature of the bug (a change in format for a changelog markdown file causes the entire app to break) and the testing it would have taken to uncover it (literally any) makes this one especially embarrassing for Anthropic.

show 1 reply
hrpnklast Wednesday at 8:43 PM

With the issues since November where one has to add environment variables, block statsig hosts, modify ~/.claude.json, etc. does anyone have experience in managed setups where versions are centrally set and bumped on company level? Is this worth the hassle?

nycdatascilast Wednesday at 8:40 PM

Work around from comments:

  rm -rf ~/.claude/cache
  mkdir -p ~/.claude/cache
  echo "# Changelog" > ~/.claude/cache/changelog.md
  chmod 444 ~/.claude/cache/changelog.md
wojciech12yesterday at 5:40 AM

I wonder when they will make the support for lsp-tool (plugin) working properly finally.

show 1 reply
334f905d22bc19yesterday at 11:10 AM

same

@jayeshk29 is our hero

Finally i can finish my fizzbuzz for the interview

stpedgwdgfhgddyesterday at 6:43 AM

It is frustrating how often things break in CC. Luckily issues are quickly fixed, but it worries me that the QA / automated testing is brittle. Hope they get out of this start-up mode and deliver Enterprise grade software.

indigodaddylast Wednesday at 8:35 PM

Maybe try opencode

show 4 replies
dionianlast Wednesday at 10:06 PM

huge changelist and issue was fixed very quickly. didnt affect me. nice work Boris

frayslast Wednesday at 8:54 PM

Claude Code creator said Claude wrote 100% of his code last month: https://xcancel.com/bcherny/status/2004897269674639461

show 4 replies
lubasaralast Wednesday at 9:11 PM

[dead]

chuckadamslast Wednesday at 9:23 PM

vibecodingisgoinggreat.com

show 1 reply
NickNaraghilast Wednesday at 9:19 PM

Meta comment, but the pace of this is so exciting. Feels like a new AAA MMO release or something, having such a confluence of attention and a unified front.