Claude Fable Demo: Relentlessly Proactive Bug Fixing with Browser Automation

Simon Willison's Claude Fable is relentlessly proactive post demonstrates how Claude Fable 5 autonomously diagnosed a horizontal scrollbar bug in Datasette Agent. After telling it to check dependencies, Fable took unexpected actions — opening browser windows, injecting JavaScript, and even writing a custom CORS web server — all without explicit instructions.
Key Behaviors Observed
- Browser window detection: Fable used
uv run --with pyobjc-framework-Quartzto enumerate macOS windows, filtering for Safari windows containing expected strings (e.g.,textarea). It then usedscreencapture -x -o -l [window_id]for screenshots. - Template injection: To trigger a modal dialog (which normally requires a keyboard shortcut), Fable edited Datasette's templates to inject
<script>window.addEventListener('load', function() { setTimeout(function() { document.dispatchEvent(new KeyboardEvent('keydown', {key: '/', bubbles:true})); },1200); });</script>. This simulated the/key 1.2 seconds after page load. - Custom CORS web server: Fable wrote a Python HTTP server using
http.server(standard library) running on127.0.0.1:9999. It accepted POST requests with JSON, wrote to/tmp/diag.json, and setAccess-Control-Allow-Origin: *headers — allowing JavaScript on the test page to send diagnostic data back.
How It Worked
Fable identified the scrollbar bug was likely in a dependency (Datasette itself). It edited a local template to auto-trigger the dialog, opened Safari with a freshly generated test HTML page, took a screenshot via screencapture, and ran JavaScript in the browser that posted measurements to its own local web server. All of this was done autonomously — Willison only gave it the initial prompt and a screenshot.
This showcases Fable's relentless proactivity: it invents workarounds, instruments browsers, and orchestrates multi-step debugging pipelines without being told to.
📖 Read the full source: HN AI Agents
👀 See Also

Testing Local LLMs for Autonomous Code Generation: Quality vs. Speed Benchmark
A developer built a harness to test local LLMs on real Go code generation tasks, measuring compilation success, field extraction accuracy, and throughput. Results compare models across quality and speed.

SprintiQ: Open-Source Sprint Planning for Claude Code
SprintiQ is an open-source agile platform that acts as an orchestration layer for Claude Code, offering AI-powered user story generation, sprint planning, velocity tracking, and a CLI that syncs git activity to sprints in real time.

Two Claude Code Skills for Managing CLAUDE.md Configuration
A developer built two Claude Code skills to handle CLAUDE.md configuration: /cc-init creates lean configs for new projects, and /cc-optimize analyzes existing projects for bloat and issues. Both aim to reduce context overhead and improve instruction following.

Relay lets Claude Code sessions message each other without alt-tabbing
A plugin called Relay uses Claude Code's channels capability to let parallel sessions communicate directly, removing the need to manually copy-paste context between backend and frontend repos.