Anthropic put out Claude Opus 4.1 on Tuesday, and I know approximately nobody outside of people who already spend too much time typing at chatbots cares about a dot-release version bump. But I sat with it for three hours last night instead of doing literally anything else I was supposed to do, so here's the writeup nobody asked for.
Quick context for anyone who wandered in from a search engine: Opus 4.1 is not a new model family, it's a patch on top of Opus 4, mostly aimed at coding and the "agentic" stuff where the model is supposed to go off and do a multi-step task instead of just answering one question. Same pricing as before too, $15 per million input tokens and $75 per million output, which if you're not used to API pricing sounds insane until you remember a single request is usually a few thousand tokens, not a million.
I've had a Python script for years that pulls RSS from about a dozen old blogs I still read (some of them older than this one, which is saying something) and dumps them into one OPML file so I can skim everything in a single feed reader instead of twelve tabs. Last month one of the feeds started returning malformed XML (not broken exactly, just weird enough that my parser choked on it), and I never fixed it because debugging XML edge cases on a Sunday is not how I want to spend a Sunday. So last night, half out of curiosity and half out of laziness, I pasted the whole script and the error into Opus 4.1 and asked it to figure out what was going on.
It found it in one pass. The feed was using a non-standard namespace declaration that my regular expression handling wasn't accounting for, and it rewrote the parsing function to fall back to a more permissive parser when the strict one throws. Fine, good, that's a nice afternoon saved. What actually surprised me was that I then asked it to also add retry logic for feeds that time out, and it didn't just bolt something on top — it noticed my existing error handling was already halfway doing that job badly and consolidated the two into one function instead of leaving redundant code sitting next to each other. Opus 4 (the one before this one) would usually just add the new thing wherever I pointed and let the mess pile up. This felt more like working with someone who'd actually read the whole file first.
I don't want to oversell this. It's an LLM patch, not a personality transplant, and I'm sure in a week I'll hit some dumb repeated mistake and remember these things are still fundamentally guessing machines with very good priors. Also (and this is a genuine complaint, not a bit), I am so tired of model names that read like software build numbers. Opus 4, Opus 4.1, Sonnet 4, Sonnet 4.5 coming presumably any minute, and every company is doing some version of this now. I understand why, semantic versioning is legible to developers, but it makes writing about this stuff feel like filing a bug report instead of talking about a product. I miss when things had names like "Watson" or even just a plain year, at least you could remember which one you meant six months later.
Anthropic's own numbers claim Opus 4.1 moved SWE-bench Verified (a benchmark of real-world-ish coding tasks) up a couple points from Opus 4, into the mid-70s percentage-wise. I have no way to verify that independently and neither does anyone reading a blog post about it, so take it as a company telling you its own homework grade. What I can verify is that it fixed my dumb RSS parser in about forty seconds and didn't leave the code worse than it found it, which is honestly the bar I actually care about at eleven at night with a coffee going cold next to the keyboard.
Feed's working again, for what it's worth. All twelve of them.