Join the discussion
Write your take first — we'll ask for email only when you're ready to publish.
- Hacker News
- I see a lot of speculation that this is somehow due to the recently-announced "watermarking", but that seems really unlikely to me, because the watermarking is about nudging per-token output probabilities or the sampler in a detectable way. That's not going to change the structure of every output to honest caveat this and verbing abstract nouns that. For the examples people are showing, and I've seen plenty of gibberish myself, you don't get there by perturbing probabilities from any sane starting point.by _dwt
- it started at Opus 4.7, way before watermarkingby make3
- Recently, I was browsing through commits on a tool I use, to evaluate how AI-slopped it had become, and came across this absolutely amazing sentence that took me several passes to interpret, courtesy of Fable:
> The wrapper is the try/finally seam future entry-condition changes need without re-indenting the loop.
So this is definitely not an Opus-specific issue, as some people seem to believe.
https://github.com/phpstan/phpstan-src/commit/934432a1b5007f...
by bakugo - I actually can't read this.
> The statement-list walk without the per-list pending-fiber flush
"Per-list pending-fiber flush?" Surely there's a clearer way to express this? Was it helpful necessary to describe "the statement-list walk" as a noun instead of talking about "walking the statement list"?
> A pure move: processStmtNodesInternalWithoutFlushingPendingFibers() becomes a delegating wrapper and the loop body is byte-identical
Did this need to be prefixed by "A pure move"? Why does the bytes of the text content of the loop body matter?
I found this too: https://github.com/phpstan/phpstan-src/commit/a9260cb3584854...
> Parked fibers are idle workers, not pending work - skipping their no-op fuel starves nothing.
"No-op fuel"? Really?
by mort96 - It's the Lalilulelo.
"I hear it's amazing when the famous purple stuffed worm in flapjaw space does a raw blink on Hara-Kiri Rock. I need scissors! 61!"
Kojima was a prophet, fite me
by bitwize - This is why I reject agentic workflows and, in fact, do not let Claude perform commits at all. I remain in control of Git completely and read all the diffs.
Also, in my experience, agentic flows are just bad. They seem like a productivity gain until you notice that it uses 100x more tokens, and therefore more time. I can prompt and read answers faster.
by preg_match - I'm wondering if some of Opus' chain of thought patterns have bled into its "human readable text output" circuitry. E.g. some of them that I stumbled on, "the bug is in the lock, not the query" reads like some of the shorthands it might use in its own chain of thought.by m12k
- This is my impression as well, that an exaggeratedly precise yet bad at communication with humans way of talking snuck in through reasoning RL, that it might be useful when it talks to itself (CoT)by make3
- Entirely possible, it always leaked but it's particularly bad in most recent models. Actually almost all issues with creative writing in LLMs are artifacts of either instruction tuning, alignment training, or CoT RL and seeding (newer models have CoT data even in pretraining).
- Yeah it's really, really bad. It's borderline unreadable. Claude seems to choose the most clever word choice it possibly can instead of the simplest. It's like the perfect inversion of how writing should be. Why say "load-bearing" when you mean "important"? Also, 50% of the stuff can't be load-bearing.
Another problem I didn't see mentioned in the thread is the conversation and reasoning leaking into text. It's a big problem for code comments. A comment will include multiple tirades about what we decided NOT to do.
Here's my list of mitigations:
- Keep sessions short
- Remind Claude of writing style. It will only last maybe 1-2 prompts as the thread notes, but if the session is short it helps
- Plan and implementation should be separate sessions to avoid the conversation leaking. My workflow: plan and brainstorm, scaffold APIs and tests, then have Claude write a seed prompt for the next session. I will also iterate over the seed prompt because it has the same text issues.
- Instruct Claude to compact comments often and have a rubric. Describe WHY, never WHAT. Comments should prioritize simple language. Etc.
by preg_match - I have created a be-terse plugin that appends
> respond tersely in Simplified Technical English
to every prompt to deal w/claudes insanity:
- Opus 5 feels like a downgrade from Opus 4.8 overall. It, along with Fable, really has a problem following instructions and staying in scope, and their prose keeps growing, both in explaining what it did and in writing multiline code comments (some comments read like a changelog, e.g. `// sky is blue (changed from red on 2026-01-01 per TCK-234 by @Foo)`).
Every time I ask it to do something, it does 80% of the job, goes off on "side quests" beyond the scope, and then leaves something out of the core ask (and when you tell it to finish, it does the same thing again).
The only advantage of Opus 5 over 4.8 is the better cutoff date for working with 3rd-party tools, though both do a very bad job of "this tool is constantly updated, I should look for the latest version first".
by jampa - I have a rule in claude.md:
``` ## Writing rules
*Describe the code as it is now — no residue, no change-narration.* Artifacts (docs, plans, comments, commit messages) should describe the current code statically, as if it had always been this way. Two facets of one rule: (1) never describe a dismissed alternative or a corrected/replaced choice; (2) even when nothing was rejected, don't narrate continuity or evolution relative to some earlier state. Mention a former state only when the current choice is genuinely hard to understand without it, and then only as an explanation of the current choice.
This governs descriptions of the code and main documentation. It does not apply to work-tracking artifacts in `doc/tasks/`. ```
Which makes comments and docs bearable but I'll be damned how it loves to overload work tracking document with every little detail.
by aytigra - I've had a lot of success combating this by adding "All summaries need to adhere to ASD-STE100 Simplified Technical English standards" [0] which I discovered from another HN thread [1]
[0] https://www.asd-ste100.org/ [1] https://news.ycombinator.com/item?id=49114639
by tylermarques - Using ASD-STE100 is in my system prompt, not just CLAUDE.md which basically never gets followed.
I actually converted it from the PDF into an explicit skill with the word list inline as well as the main rules.
Works a little bit, but give it a bit of context and the model’s training takes over and it starts talking like a dictionary-huffing crack addict again.
It’s a model problem and no amount of harness hacking seems to fix it.
by indemnity - I actually tried to switch Claude's `output-style` to ASD-STE100 Simplified Technical English for the prose it writes (code comments, commit messages), but it didn't seem to help. Figured I'll just use GPT 5.6 Sol for implementation instead of trying to "socialize" Opus 5. Anthropic will have to address it sooner or later if they want people to keep using it.by mihaelm
- Basically every decision or summary I now ask "Help me understand better, please explain in plain-language with examples."
Works with 5.6 sol also, when you're deep in the weeds. I rationalize this as the models attempting to compress as much into the fewest tokens, though the choice of words often doesn't make sense to me, going back to read the original after, its often there. It definitely feels like a different sort of 'Machine Language' though xD
by ArtRichards - I do this in one word “eli5” (explain like I’m 5). It’s a Redditism that it understands.
I also have a writing steering file that makes Opus’ writing less insufferable. Otherwise it’s really bad.
I also have an interlocutor skill that makes it less epistemically arrogant (ie Less Wrong asshole tendencies). With this skill I can have a real discussion with it instead of it trying to one up me.
by wenc - Sounds like engagement KPIs are through the roof since 4.8by prymitive
- Same. I've also found asking for explanations in "layman's terms" has been helpful.by bartrab
- > I rationalize this as the models attempting to compress as much into the fewest tokens
I'm not convinced about that. I just asked Opus to explain a bullet point from its research for me. The bullet point in fact had a 1-sentence explanation that was in a referenced article. What it gave me instead was 8 paragraphs and a table. Maybe it's my fault because I just asked it to "clarify point XYZ" instead of being more precise.
by dluxem - I suppose what I’m surprised by most is the degree to which the text bloviates. Rarely is it encoding a dense concept. Instead it’s a simple concept expressed with great complexity. I wonder what tuning resulted in this because the output programs it writes are superior to prior iterations for my use-case.
It’s just an amusing degree of bombast as well. The pre-emptive hedging makes sense: despite the insight into J space etc., the models still do the majority of their thinking in generated tokens so it is forced to write “this no longer does an O(n^2) read over all rows” in a comment in brand new code. It’s a substitute for working memory. “It’s easy to be accidentally quadratic here, so I’ve done it this way specifically to avoid that” becomes temporally labeled into “this no longer” because of the order of operations “write quadratic, user prompt to linear, write linear” but it remains as a comment to its amnesiac future self which has poor Chesterton-Fence-familiarity.
Despite my annoyance with Claude’s writing style, my friends do tease me with examples like this that it comes up with: “to be honest, it sounds like you”. Thanks, guys, well played. Simple concepts expressed complicatedly.
by arjie - The tunings.....were speed runned by contractors paid based on timed tasks with little quality control, unreasonable pressure tactics, time locked tasks with an incentive structure to get it done as quickly as possible because of the strict micromanagement of the companies that hire 1000's of people to do the work....and treat them like software...not people. So there is no pride in the tuning....its just a fire hose of people trying to keep their contracted gig job despite knowing the expectations are unrealisticby kderbyma
- Yeah I basically have to delete or rewrite any code comments Opus puts in, they are super wordy and circular. Plus, and this is what bothers me most: it refers to issues/explanations that came up in my chat with it, but which are completely contextless as a code comment. Stuff like 'this addresses edge case X', which is true but which you wouldn‘t ever put into a comment because it‘s so minor, and if you did bring it up you normally mention five other similar edge cases.by Therenas
- Comments which, of course, only further increase token consumption when again processed ...by Bluestein
- The key phrases I've found that help is to tell it "No memorializing decisions in output artifacts" and "Only describe what is, never what was in documentation"
- Whenever I have Claude make changes I ask Codex to review the changes and reduce the comments.by zeven7
- Same, oh God the leaking of our chat infuriates me. It also loves to document public functions with what the caller is and doing, and I'm like that's not how this works! The point of an abstraction or interface is that it stands on its own. It's not supposed to be for some specific caller elsewhere in the code.by losvedir
- I find it particularly bad at writing test comments, I usually start fixing bugs by adding regression tests and Opus tend to put story into comments for these, including “but it fails because…” followed by bug description including line numbers and call chains. It just lives to narrate everythingby prymitive
- +1 we ended up adding something to our CLAUDE.md specifically to counter it. Something along the lines of "comments should be treated the same as production code, they shouldn't leak the content of conversations and stand the test of time". It doesn't always work, as other people say claude stops following these the more its context window gets filled, but now it's mostly a matter of telling it in a new session to review the changes against the guidance on comments and clean them up.by glumia