There are a few tech problems that make me want to throw a printer out the window, and “no macOS driver” sits near the top of the list. A developer named Kuberwastaken had an HP Laser 1008a in that exact misery — a printer HP branded but never gave a macOS driver — so he handed the whole problem to Claude Code. Four hours later he was printing again. And that is only half the story.

The part that kicked off a long argument on Hacker News is how it was done, and whether the headline “Claude wrote a macOS driver” was even true. Spoiler: both sides had a point. Watching it play out told me more about where AI coding agents are heading than any model benchmark.
What Actually Happened
On August 17, Kuberwastaken fired up Claude Code running Opus 4.8 with a big context window and pointed it at his HP Laser 1008a. This printer is a rebadged Samsung in an HP shell. It speaks Samsung’s SPL3 raster language rather than PostScript or PCL, it is not AirPrint, and HP shipped no driver for it on macOS at all. If you manage an office, you know this exact pain: a perfectly good laser sitting dark because the vendor decided your platform did not matter.
In a single long sitting Claude Code got it printing. The session is public, and reading it is genuinely useful. It hunts through the open-source SpliX engine, figures out which Samsung variant HP actually rebadged, and eventually lands on a working solution.
That first version was the “good enough” one. It ran HP’s proprietary Linux driver inside a Docker/colima container and bridged that to macOS through a root launcher. The words “reverse-engineered the SPL3 raster language” in the original write-up sold it as something more heroic than it was.
Then the Critics Pushed Back
Hacker News noticed. The top comment was blunt: this is not “native,” and Claude did not write a driver. It wrapped an existing Linux driver in a VM and glued it on. Someone linked a 2017 tutorial showing the same Docker trick, and accused the whole thing of being AI-generated slop dressed up as an accomplishment. One commenter pointed out the security cost — that first version needed a root launcher running code from a user directory.
That criticism is fair, and it is exactly the kind of thing I have hammered on before when AI coding assistants hallucinate package names or when an agent gets loose on a codebase. A working result is not the same as a correct result. “It prints” and “it prints for the right reasons” are different sentences.
The Lesson Is Not the Driver. It’s the Method
Here is where the story gets interesting. Instead of arguing, the developer did the thing that separates a good agent session from a slop session: he pushed past “it works” and went looking for why.
He and Claude diffed the raster output — HP’s real codec output against SpliX’s — and found the one real difference. The page header said the page was roughly 16 by 23 inches because of a dots-per-inch mismatch. HP emits the header on a 300-dpi grid; SpliX wrote 600-dpi values, so the printer laid one band, hit the real A4 edge, ejected, and assumed a giant page remained. That single bug explained the striped, repeating pages perfectly.
The fix was a ten-line patch to SpliX. With that, the Docker container, the VM, and HP’s vendor binary all went away. Then the Python and libusb layer went too, replaced by a tiny native IOKit helper. What shipped is a clean, native macOS driver: a patched SpliX filter and a small C USB tool, nothing else. The SPL3 fix is being upstreamed to SpliX so everyone’s rebadged Samsung gets it.
That arc — working hack, then diagnosis, then a minimal fix you can hand back upstream — is the real skill. It is the same discipline I wrote about when Claude Code’s auto mode became the default: an agent is only as trustworthy as the verification loop around it. The model found the answer fast. A human still had to demand the honest version of it.
What This Means for AI Coding Agents
Reverse engineering is turning out to be one of the genuinely good fits for LLMs. The comment thread is full of the same story told over and over: an AI mapped a golf cart motor controller’s protocol, rebuilt a controller app for abandoned Devialet amplifiers, resurrected an ePaper display after a firmware change, reverse-engineered a BLE protocol for a lamp. None of these were worth a human’s months of unpaid labor. Each one was a fun evening with a model that reads a binary like it reads a book.
Driver code is, at the end of the day, a language. Proprietary protocols are languages nobody bothered to document. LLMs are unusually good at those — the gap between the “obvious” documented path and the obscure undead hardware is exactly where they fill in.
There is a real worry buried in here too, the one a commenter voiced nervously: what happens to the people who make a living writing and fixing low-level driver code? My honest read is the same as it was with Meta’s Muse Code and every other capable agent — the hard, rare part was never typing the driver. It is knowing what to check, what the protocol actually promises, and when the answer is wrong even though it works. The model did not have that judgment. A human supplied it.
The Bigger Picture: Right to Repair, Meet AI
The deepest thing in the thread was one short line: “Freedom — that’s what it is.” Hardware vendors gatekeep their own devices because a small number of users wanting to fix things is invisible to their business model. With an agent that reads protocols, a motivated owner can claw a device back from abandonment in an afternoon.
That has a security edge too, and it is worth being honest about. The original approach needed root-level code running from a user folder, and a Mac-focused agent that can see and poke your whole system raises the same questions I wrote about when ChatGPT started watching what is on your screen. Give an agent real hardware, real USB access, and a root prompt, and you are trusting a lot. The final version here narrowed that trust to two small binaries and a CUPS filter — which is how it should be done.
So Where Does That Leave Us?
Critics were right that the original headline oversold things. The author was right that the end result was real. Both can be true, and the interesting part is underneath.
We are watching the definition of “getting a thing done” change in front of us. A four-hour session with an agent did what used to be a weekend-to-months project, and then did it properly, and gave the fix back to open source. It is easy to be cynical about AI slop, and I am plenty cynical. But a printer that prints again is not slop. It is a small piece of freedom, and an agent did the heavy lifting while a patient human checked the seams.
Next time your hardware vendor shrugs at your platform, remember this one. The barriers they built are suddenly a lot lower than they think.