1.2 seconds after the window opens, this code triggers a simulated / key, which is the keyboard shortcut for opening the modal dialog.\n\nThere was one challenge left. In order to understand what was going on, Claude needed to run JavaScript on the page to take measurements for itself.\n\nIt wrote its own custom web application to capture information via CORS, then ran that as a local server and opened a page with JavaScript that would POST directly to it!\n\nHere’s the Python web app it wrote, using the standard library http.server package:\n\nfrom http.server import HTTPServer, BaseHTTPRequestHandler class H(BaseHTTPRequestHandler): def do_POST(self): n = int(self.headers.get(\"Content-Length\", 0)) open(\"/tmp/diag.json\", \"w\").write(self.rfile.read(n).decode()) self.send_response(200) self.send_header(\"Access-Control-Allow-Origin\", \"*\") self.end_headers() def do_OPTIONS(self): self.send_response(200) self.send_header(\"Access-Control-Allow-Origin\", \"*\") self.send_header(\"Access-Control-Allow-Headers\", \"*\") self.end_headers() def log_message(self, *a): # quiet pass HTTPServer((\"127.0.0.1\", 9999), H).serve_forever() All this does is accept a POST request full of JSON and write that to the /tmp/diag.json file. It sends Access-Control-Allow-Origin: * headers (including from OPTIONS requests) so that code running on another domain can still communicate back to it.\n\nThen Claude injected this code into the template that it was loading in a browser:\n\nconst host = document.querySelector(\"navigation-search\"); const ta = host.shadowRoot.querySelector(\"textarea\"); const cs = getComputedStyle(ta); fetch(\"http://127.0.0.1:9999/diag\", { method: \"POST\", body: JSON.stringify({ dpr: window.devicePixelRatio, scrollWidth: ta.scrollWidth, clientWidth: ta.clientWidth, whiteSpace: cs.whiteSpa"}
Scoopfeeds — Intelligent news, curated.
computer-science

Claude Fable is relentlessly proactive

Hacker News · Jun 12, 2026, 1:06 AM · Also reported by 4 other sources

Key takeaways

  • After two days of experience with Claude Fable 5 I think the best way to describe it is relentlessly proactive.
  • I was hacking on Datasette Agent today when I noticed a glitch: a horizontal scrollbar that shouldn’t be there in the jump menu chat prompt.
  • Then I started a fresh claude session in my datasette-agent checkout, dragged in the screenshot and told it:

After two days of experience with Claude Fable 5 I think the best way to describe it is relentlessly proactive. It knows a whole lot of tricks and it will deploy pretty much any of them to get to its goal.

I’ll illustrate this with an example. I was hacking on Datasette Agent today when I noticed a glitch: a horizontal scrollbar that shouldn’t be there in the jump menu chat prompt. I snapped this screenshot:

Then I started a fresh claude session in my datasette-agent checkout, dragged in the screenshot and told it:

Article preview — originally published by Hacker News. Full story at the source.
Read full story on Hacker News → More top stories

Also covered by

Aggregated and edited by the Scoop newsroom. We surface news from Hacker News alongside other reporting so you can compare coverage in one place. Editorial policy · Corrections · About Scoop