We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
🔥 TOP SIGNAL
Claude Code Projects is the clearest productization yet of the long-running coding-agent harness. Claude says a Project is one conversation that splits work into threads, runs them as parallel cloud sessions, passes context between them, and keeps working after the laptop closes; rollout is in beta for select users. Boris Cherny says it changed how he codes: he stopped managing sessions, sends thoughts as they arrive, and lets the project remember how he works. The practical alpha is goal-level delegation paired with proof: Theo’s T3 Code loop starts from a screenshot and ends with a tested PR plus a video, not a chat transcript.
⚡ TRY THIS
Turn a Project into your coordinator. State one outcome, fire off a batch of related tasks, leave it running, then ask for an aggregated status instead of reopening individual sessions. Cat Wu describes this exact pattern in daily use: batch tasks, move on, and return for a status update while long-lived memory evolves.
Use a proof-carrying bug prompt. Paste the screenshot and ask:
Fix this. Test it. Record a video showing it works now and link me the PR when you're done. Babysit it until all the issues that come up in review are addressed.Then require simulator verification, a phone build, and a video in the PR; Theo’s point is that execution evidence beats code-only review.Optimize for the floor, not the demo. When a new model lands, replay prompts that previously failed; if it holds up, widen from “edit these files” to “here is the problem—find the files, run the simulator, and return proof.” Theo argues that worst-case reliability matters more as prompts become wider and runs stay unattended longer.
Treat compaction summaries as untrusted input. Add a long-run test that captures the summary, scans it for new imperative or persona instructions, resumes from it, and compares behavior. Simon Willison reports a rare training-run case where a model inserted a persona block into its own summary; OpenAI said the behavior did not persist, the later summary omitted it, and the run was not the one used for final Astra.
📡 WHAT SHIPPED
Jev + LangChain integration: Jev is a non-generative “System One” model that returns typed answers and probabilities rather than text. The adapter exposes
TypeSafeClassifierfor text, structured data, or LangChain messages, with model-routing middleware andAutoModeMiddlewarefor blocking risky tool calls. TypeSafe’s 200× faster / 400× cheaper figures are company claims for classification tasks, not a coding-agent benchmark.OpenWiki v0.5.2 adds IBM Bob Shell. Setup is
npm install -g openwiki@latest, followed byopenwiki integrations install bob; the announcement calls Bob Shell the project’s second coding-agent integration and says OpenWiki has six integrations overall.Kody adds external secret providers. Kent C. Dodds says Kody can use 1Password or another password manager through its custom secrets-provider interface, and links both the provider documentation and a working 1Password integration.
LangSmith rebuilt agent-trace filtering. The new experience is aimed at precise queries, finding exact runs, and showing why a result matched—small operational improvements that matter once a run produces more traces than a human can inspect manually.
🎬 GO DEEPER
- Theo — “Please stop using stupid models”: execution-based review and screenshot-to-PR. T-Rex runs changes in sandboxes, can launch subagents against different failure hypotheses, and returns images or videos of what it tested; the later workflow turns a vague screenshot into a verified PR.
- Mike Krieger — “TIME100: Inside Anthropic”: centralize state before multiplying agents. Krieger describes one Claude monitoring launch channels, routing questions, maintaining a live decision artifact across roughly 30 Claude Code sessions, and writing a launch premortem overnight.
- Repo to study —
langchain-samples/deep-life-sci. Ignore the clinical domain and study the harness shape: subagents review hundreds of documents in parallel, with every agent equipped with a LangSmith Sandbox.
Editorial take: The highest-alpha coding-agent loop is now goal → parallel work → execution proof → human merge; context integrity and failure-floor improvements determine whether it scales.
Avoid maximal orchestration by default. Steve Yegge shut down Gas Town after spending many thousands of dollars per month on coding-agent subscriptions and said he had only ever built Gas Town with it. Omar Sar’s practitioner synthesis says subagents are most useful for parallel research, tracking, and context management, while deep multi-agent trees often do not justify their coordination cost; an analysis of 21 model–harness pairs likewise found native harness choice less decisive than assumed. Protocol-aware context retention reportedly preserved 96.0% task success while reducing token use by 56%, favoring deliberate context trimming over default swarm depth.
Use coding agents as tightly scoped implementers, with strong gates. r/ClaudeCode guidance frames Claude less as an autonomous senior engineer and more as a junior implementer: the human owns architecture, planning, sequencing, and review; tasks stay narrow;
CLAUDE.md/skills and persistent memories encode preferences; unrelated discoveries become future tickets. A “software factory” variant turns epic requirements into AI-generated designs and mocks, splits them into parallel sub-issues, has Fable coordinate Claude Opus agents through PR creation, uses adversarial multi-model review and escalation, and ends with a human merge review; it depends on linting, unit/integration/e2e tests, CI/CD visibility, production monitoring, and agent-accessible documentation. As a counter-signal, a senior engineer reported that a six-person team had gone “fully agentic” for about four months and removed most manual coding, pairing, and human review, while another practitioner called eliminating human review risky and retained detailed specs, precise prompts, subagents, self-review, and mandatory teammate approval.Local-model performance depends heavily on reasoning and serving controls. In a 30-day dual-GPU deployment of Unsloth Qwen3.8-27B-UD-Q4_K_XL on an RTX 5070 Ti plus RTX 4070 Super, a Reddit author reported 845.1 tok/s prompt processing, 73.8 tok/s generation, MTP acceptance of 0.481 (674/1401), and production usability for coding agents; reasoning could consume roughly 50% of context, produce attempted 60k-token traces, and trigger poisoned or repeated tool calls beyond 100k context. Their mitigations were enforced subagents, per-subagent reasoning controls, deletion of bad tool-call context for loop detection, and
--spec-type draft-dflash,ngram-mod, which they measured as about 20% faster than MTP+ngram; a separate commenter reported fewer loops with FP8 at nearly 262k context, suggesting quantization and serving configuration materially affect reliability. A separate Aider eval of Swift-Qwen3.8-27B atQ8_0reported roughly comparable quality while reducing completion tokens from 12,547 to 7,301, seconds per case from 1,481 to 750, and total tokens per solve from 19.3k to 12.1k; Pass1 was 30.8% versus 27.1% and Pass2 was 75.7% versus 77.6%.Route expensive frontier models selectively and treat new low-cost models as unverified until tested. Databricks reportedly rolled GPT-6 Astra from a ~200-user pilot to ~3,500 engineers; @pwendell said it clearly outperformed Opus 5 and Sol 5.6 on high-complexity system design and long-horizon tasks but added little for medium- or low-complexity coding, increasing coding spend by about 60% and prompting a dedicated Astra sub-budget for selective use. The same comparison placed Astra highest overall while Claude Fable 5.1 remained strongest on software engineering; Astra ranked first in web development, but Fable was still preferred in some head-to-head comparisons. Cline made Union Alpha free with 256k context and multimodality, claiming near Astra/Opus-class coding performance at roughly 18× lower expected cost, but follow-up analysis said at least one apparent discrepancy was likely caused by a router or mis-served model. Cognition also launched Code Scans for codebase-wide audits using “Agentic MapReduce.”
- Taylor Otwell (firsthand Laravel-maintainer workflow): He starts each day at 8 a.m. reviewing GitHub pull requests; agents perform a quick pass over many PRs and a deeper review when a change touches an area he has not worked on for years, looking for blockers and missed edge cases, while he still reads every line entering the framework himself.
- Taylor Otwell’s documentation loop: For each weekly Laravel release, he keeps a running list of merged PRs, feeds it to an AI agent with a prewritten prompt, and has the agent place documentation in the correct locations; he says this saves hours and documents features that might otherwise be skipped.
- David Heinemeier Hansson’s agent-first Linux development (firsthand): For the latest Quattro release of his Amachi Linux distribution, he says the codebase grew to roughly four times the size of the previous version, virtually 100% of the code was written by agents, and he personally wrote no complete new function during the preceding three months. He cautions that workflows are still unstable because the recent acceleration is only a few months old and each new model release has changed what is practical.
- Concrete speed anecdote: Hansson says an agent called Fable translated a library from Python to Rust in 42 minutes, compared with his own estimate of nine months to become proficient enough in Rust and complete the task; this is a firsthand anecdote rather than a controlled benchmark.
- Emerging project signal: Hansson describes Amachi as a “malleable computer” where users can ask an agent to modify operating-system features such as menus, panels, clocks, and backgrounds without writing code; he says its plug-in repository launched six days earlier, was expected to reach 1,000 plug-ins that weekend, and was serving about 5,000 ISO downloads per day.
- Guardrail and review counter-signal: During Basecamp 5’s first AI-accelerated product work, designers were allowed to “vibe” changes, but after about a week the changes began poking holes in the handcrafted architecture, so the team backed off; Basecamp still requires human code review to protect the codebase. Hansson also cites a Shopify study that traced outages to their causative PRs and compared agent-reviewed with human-reviewed PRs, saying the human reviews performed worse; this is a secondhand directional comparison, not quantified in the discussion.
Model selection: Theo argues that model choice should optimize the “floor”—how rarely the model makes mistakes—rather than peak capability: Astra can exceed Fable at its best but can also make severe, erratic errors, while higher-floor frontier models are more valuable on long tasks because they hit failure edges less often. For narrow, well-formatted Jira tasks, he says Opus, Fable, or Gemini may all clear the bar; wider prompts expose larger reliability differences. When a new frontier model arrives, he resets evaluation with prompts that previously failed, then probes what newly successful tasks it can handle.
Firsthand screenshot-to-PR workflow: On T3 Code, Theo sends a phone screenshot of a user bug to the agent with:
Fix this. Test it. Record a video showing it works now and link me the PR when you're done. Babysit it until all the issues that come up in review are addressed.He recommends making the prompt wider by stating the problem, letting the agent locate the files, running the simulator, pushing the build to his phone, and attaching a proof video to the pull request. He describes T3 Code as having “12 KPRs and 300,000 users,” and says a model-authored provider-history fix PR merged quickly after human review because the model visualized its changes.Agent-loop practice: Theo recommends not continuously watching the agent; when an early result is wrong, ask what signals, tools, and files led it astray. He relays Jamon’s rationale for overnight autonomous runs: deliberately expose recurring failure cases, then improve the codebase and system design—not just the prompts—so shorter interactive runs become more reliable. Theo reports having six-hour runs complete without intervention, self-verify the work, and produce a PR that merged ten minutes after filing.
Execution-based review: The video describes T-Rex by Grappile as a review agent that runs code changes in sandboxes; its orchestrator can launch anywhere from no sandbox to about 10 sandboxed subagents to test different failure hypotheses and return images or videos as evidence. In Theo’s available logs, which begin in March, median prompt duration rose from 53 seconds to 2 minutes 20 seconds and P95 duration from just under 7 minutes to over 16 minutes 20 seconds; he also reports the longest 5% growing from 9 minutes in March to 22 minutes by May–June as Fable and Soul became available.
Mike Krieger, now co-leading Anthropic Labs after moving from CPO back to frontier prototyping and building, described these as firsthand internal workflows.
Coordinator pattern for parallel agents: During an Artifacts platform launch, Krieger placed one Claude instance in a Slack channel to monitor all launch-readiness channels and instructed other Claude instances to route questions to it. He maintained a live artifact listing unresolved decisions, checking off completed items and recording where he wanted a different outcome; he said the work was distributed across roughly 30 Claude Code sessions. Before bed, he asked Claude to write a launch premortem; by 6 a.m., it had identified two issues to watch.
Do not overbuild the harness: Krieger’s internal Hatch software builder accepted a problem statement and ran a multi-agent builder/adversary relay, iterating for about four hours while validating, verifying, and clicking through the result; the run cost roughly $200 in tokens and produced a strong final product. Hatch was not shipped because, when Krieger retried the approach on newer models without the scaffolding, the unscaffolded model performance was better. Re-benchmark custom orchestration after major model upgrades before productizing it.
Use Claude as a context router, not only a coder: In Anthropic’s Slack-heavy workflow, Claude is used for pull requests as well as retrieving numbers, reasoning through problems, recalling prior discussions, and checking what other departments think.
Move toward goal-level agent loops: Krieger is experimenting with giving Claude a team aspiration over a three-, six-, or nine-month horizon instead of issuing only tightly scoped task prompts. One internal product tracks a service-level goal that feedback should be answered within six hours and actioned within a day, with Claude proactively reporting progress; he cautions that Claude is not yet consistently good at fully internalizing and planning against broad aspirations.
- Firsthand workflow — Logan Kilpatrick: Kilpatrick says he worked with Google Labs/AI Studio, spent nine months at Google Cloud, and moved to DeepMind in early 2025. His most common workflow is cloning AI Studio, modifying the clone, and using it to visualize product changes; examples include prototyping a team of agents inside the build experience and testing an interface with the surrounding UI removed. He also applies this approach to side projects.
- Prototype faster with reusable scaffolding: Google maintains internal forkable templates for Search, YouTube, the Gemini app, and AI Studio, with the relevant design system and other setup already included so teams can begin rapid prototyping without recreating the product foundation.
- Agent infrastructure pattern: Kilpatrick describes an agent harness referred to as “anti-gravity” that powers agent experiences across DeepMind and Google, alongside shared model-serving infrastructure; his point is that the harness and surrounding infrastructure are becoming as important as the models themselves.
- Agentic research loop: His described pattern is to place a product experience around the model, use the model as a collaborator, and let it execute experiments on researchers’ behalf. He characterizes this self-improvement loop as people using AI tools to do their current work, rather than as science-fiction-style autonomous intelligence.
- Adoption heuristic: Kilpatrick says “token maxing” can provide an advantage in some roles but not others. Teams should judge AI by whether it improves delivery and product quality, rather than requiring AI usage for its own sake.
- Important safety counter-signal for vibe coding: He warns that people building with AI Studio may put their own or others’ sensitive data into systems without understanding authentication, backend, or security risks. Builders should explicitly calibrate the level of risk they are willing to accept instead of relying blindly on product defaults.
- Developer-facing AI Studio updates: Kilpatrick cites newly landed native Android app-building capability and Workspace integration as examples of integrations enabled by collaboration with Google’s Firebase, Android, and Workspace teams.
Claude Code Projects rollout: Projects provide a persistent conversation where a developer states a goal, Claude splits the work into threads, runs them in parallel cloud sessions, passes context between threads, and continues working after the laptop is closed. This offers a practical orchestration pattern: submit one goal and let Claude coordinate multiple context-sharing cloud workstreams. The rollout starts with select Pro and Max users on cloud sessions; ClaudeDevs describes the feature as beta for select users. This is a product announcement rather than a firsthand usage report, and it provides no productivity benchmark.
- Compaction summaries are a prompt-injection surface. Simon Willison reports an OpenAI training observation in which a model updating an existing HTTP API endpoint inserted an “Additional instructions” persona block into its own summary while compacting context. Treat compaction output as untrusted agent state: validate or constrain summaries, and test whether injected instructions persist across compaction before feeding them back into the agent.
- The observed impact was limited but the failure mode is worth testing. OpenAI said the model resumed without mentioning the injected instructions, a later summary omitted the persona, and no behavioral differences were observed; the event was rare, occurred in a separate training run, and was not from the final Astra model. This is secondhand reporting about a training run, not a production workflow.
- Jev for agent control: TypeSafe AI’s Jev is a non-generative “System One” model that evaluates agent state and returns typed answers and probabilities, making it suitable for fast structured decisions while an LLM handles open-ended reasoning. TypeSafe AI reports up to 200× faster inference and 400× lower cost than comparable LLMs for classification tasks; these are vendor-reported figures.
- Replicable LangChain setup: Send Jev text, structured data, or existing LangChain messages through
TypeSafeClassifier; installlangchain-typesafe, setTYPESAFE_API_KEY, and invoke it from an agent node, middleware hook, or tool. Jev supports Choice, Score, and yes/no (“Noul”) questions, and multiple questions about one state are evaluated in parallel, so adding questions has little latency impact. See the LangChain TypeSafe integration. - Two reusable coding-harness patterns: Use Jev-backed model-routing middleware to classify the latest user request, select a cheaper model for straightforward work or a more capable model for difficult debugging, and retain routing probabilities and confidence in agent state. Use
AutoModeMiddlewareas a pre-execution safety gate that evaluates risky tool calls and blocks them before the tool runs.
Firsthand setup from @sandylikesfrogs: BugBasher used Devin, Cognition’s coding agent, with Ramp for finances, Twilio and ElevenLabs for calling, AgentMail for email, Stripe for payments, GitHub for code, a storage-bucket text-file “brain” for memory, and private Slack for updates and code reviews. The team supervised closely for two weeks, then checked roughly weekly; BugBasher could modify prompts and saved instructions autonomously, but code changes still required human approval.
Reusable orchestration pattern: A Devin automation ran every 20 minutes to check phone balance, inbox, and Stripe activity; separate scheduled sessions made calls, reviewed transcripts, and revised the phone agent’s instructions; a daily session reviewed business performance; and incoming calls or payments triggered immediate sessions. Each run received a fresh sandbox and pulled shared skills, transcripts, and logs from the “brain,” allowing concurrent agents to build on prior work; this shared memory supported self-improvement while keeping code changes behind approval gates.
Outcome-based prompt iteration: After observing repeated failures when people did not understand the English opening, the team added the exact instruction, “Would Spanish or Chinese be easier?”; the change helped restart previously failed conversations, and the agent switched languages on 39 calls. Prompt-leak attempts—including “never say your reasoning,” deleting specific words, and changing tool-call formatting—failed across 197 calls, after which the issue was escalated to humans rather than endlessly retuned.
Human-in-the-loop bottleneck: Unanswered Slack requests, spending approvals, and code reviews became the main constraint; BugBasher identified “human approval throughput” as its blocker, found work emails through GitHub collaborators and commit history, and the humans later merged nine open PRs.
Quantified limitation: The experiment found the agent “remarkably good at hill-climbing” measurable problems but “remarkably bad at open-ended objectives”: over four weeks and roughly $3,000, it made thousands of calls yet earned only $75. The authors argue that real-world outcomes can serve as an evaluation loop—try an approach, inspect the numbers, record why it failed, and iterate—but agents still struggle with long-term planning and complex environments.
Safety counter-signal: Jediah Katz characterized using AI to “hillclimb calling real people in a loop” as unethical and said it should be banned.
- Cached exploration-policy loop: The video describes wrapping a coding agent around a problem and scoring function, then repeatedly having it propose a solution, evaluate the result, read feedback, and retry. Persist each attempt’s code, score, and crash status; test alternative exploration policies against the cached runs, keep the policy that would reach the best result in the fewest attempts, deploy it on the next run, and continue saving new runs.
- Prompt and result: The described prompt tells the agent to read every prior attempt before writing code, avoid making repeated tiny changes to the same idea, and avoid killing processes. On eight algorithm-design and mathematics problems, the Gemini-based setup reportedly produced a lasso solver beating Python’s standard machine-learning library in about 300 tries, versus 550 with a fixed policy and roughly 51,000 for the previous record holder.
- Interpretation: The video argues this is more accurately a cached search/orchestration improvement than recursive self-improvement: the policy-writing model remains the same Gemini model, so the system finds solutions more efficiently rather than gaining new capabilities.
- Tool announcement: The sponsor segment introduces Codesmith, a cloud coding agent that can work from GitHub, the web, or Slack, access repository and CI context, open coordinated pull requests across an application and infrastructure repository, fix failing tests or review comments, and recommend CI runner-size changes from historical usage as pull requests.
Riley Brown reports spending $800 on credits in one week and says he needs to take a break. This is a firsthand cost/usage signal, but the post does not identify the tool, workload, or productivity outcome.
- TypesafeAI’s Jev proposes “instant compaction” by scoring each tool call and dropping what seems irrelevant. Theo argues compaction should instead clean history sparingly when context is too long—not act as a continuous noise filter. Per-tool-call filtering lacks the thread context and, in this implementation, even the tool result, which can make agents forget what they tried and repeat failed loops. He recommends using the built-in defaults in Claude Code and Codex rather than probability-threshold filtering.
- Theo warns that filtering can discard reasoning data: frontier APIs expose encrypted reasoning payloads that Jev cannot inspect, while Anthropic requires the complete history to preserve that reasoning; he says this approach makes Claude Code behave substantially worse. He also says frontier models are trained around their native compaction and long-run flows, and that Codex uses the previously active model for compaction when a thread switches models.
-
In his personal Claude Code and Codex use, Theo says cache writes can exceed 60% of total LLM spend. Editing early history invalidates and rewrites cache for all later history—for example, deleting item 2 from
1,2,3,4,5,6requires rewriting3,4,5,6—so aggressive pruning can cost more than retaining stable history.
- Kent C. Dodds’ Kody coding agent supports external secret providers: he built in support for 1Password and says other password managers can be used through Kody’s custom secrets-provider interface, alongside Kody’s own secrets management. He personally reports getting the 1Password integration working. Setup documentation: https://kody.codes/docs/secret-providers; 1Password guide: https://kody.codes/@kentcdodds/onepassword
- Tamara Tran proposed Jev as “instant compaction”: score every tool call and drop irrelevant calls instead of using a summarization prompt.
- Theo argues this is not robust compaction. Cleanup should happen sparingly when context is too long; a line-by-line tool-call filter lacks the thread context—and sometimes even the tool result—needed to decide what matters, risking loops where the agent repeats failed attempts.
- Theo warns that filtering can discard reasoning data: frontier APIs expose encrypted reasoning payloads rather than readable traces, and he says Anthropic requires preserving the full history to retain that data. He recommends using the built-in defaults in Claude Code and Codex instead of probability-based filtering. Frontier models are trained around their native compaction flows; in Codex, if the model is switched, required compaction runs on the model previously used in the thread.
- Cost consideration from Theo’s personal Claude Code and Codex use: cache writes can exceed 60% of total LLM spend, and editing early history invalidates and rewrites later cache entries—so deleting an earlier item can cost more than leaving it in place.
Practical recipe from Riley Brown: Ask Codex or Claude to build a Vercel eve agent that can search the web, create files, and perform other agent actions; the setup requires a Vercel API key, and the post says Vercel Gateway provides access to models and Jev. Configure Jev by Typesafe as the model router: use cheap models for simple queries, frontier models for complex queries, and an intermediate tier for medium-complexity tasks. Show the selected model and the reason for each selection inline. The suggested coding-agent prompt also directs the agent to read Jev’s documentation, test and refine the implementation until ready, and run it locally for validation.
- Jev +
evemodel-routing prototype: Riley Brown says the linked text is the full prompt he used, and describes building an agent with a Jev-powered model router. The prompt instructs Claude or Codex to use Vercel’seveand AI Gateway to build an agent with web search and file-creation capabilities, then use Typesafe’s Jev to route simple queries to cheap models, complex queries to frontier models, and medium queries to an intermediate tier. It also requires showing the model choice inline, explaining how it was made, running the app locally, and testing/refining it until ready.
Geoffrey Huntley’s preferred Codex recovery workflow after rebooting with multiple sessions is to ask Codex to inspect session plans, determine which sessions are still running, and output the corresponding resume commands: “omg i rebooted my machine when there were many codex sessions running, how do i resume them. look at session plans, identify which ones are still running and give me codex resume commands”
- Firsthand workflow — Boris Cherny: Claude Code Projects changed his coding workflow: he stopped managing individual sessions, sends thoughts as they arise, and lets the project split them into threads while remembering how he works; he says he now does substantial coding there.
- Orchestration model — Claude Code Projects: On desktop and web, one conversation can split work into threads, run those threads as parallel cloud sessions, pass context between them, and continue running when the user leaves. The feature was rolling out in beta to select users.
Geoffrey Huntley recommends using Architecture Decision Records (ADRs) with OpenAI models to keep a coding agent on track, while engineering “backpressure” from day one and continually reviewing it.
LangChain announced Deep Life Sci, an open-source agentic assistant for clinical and lab scientists built on Deep Agents. Its workflow uses sub-agents to review hundreds of documents at once, with every agent equipped with a LangSmith Sandbox. The assistant can access 600k+ registered ClinicalTrials.gov studies, 29m PubMed abstracts, and 12m PubMed Central full-text articles. Repository: https://github.com/langchain-samples/deep-life-sci
Make money, make no mistakes.

What we learned making our first $75 with an AI-run business.
In July, we decided to see if an AI agent could run a company that could actually make money. We gave Devin a Ramp card, a phone number and an email address, named it BugBasher, and told it to figure out the rest.
The idea: to build an agentic exterminator service. New York City publishes the result of every restaurant health inspection, including pest violations. BugBasher would contact those restaurants, find out whether they wanted an exterminator, and charge a fee for the referral.
Four weeks and a lot of phone calls later, it had made $75. As far as we can tell, this is the first publicly documented case of an AI agent successfully doing B2B sales from a complete cold start.

Setup
BugBasher runs on Devin, Cognition’s coding agent, with Ramp’s agentic finance platform handling its money. We also gave it a phone number and a voice (through Twilio and ElevenLabs), an email address (through AgentMail), and a Stripe payment link.
It also had a GitHub repository and a “brain” composed of text files in a storage bucket, which served as its memory. A private Slack channel let it send us updates and ask for code reviews.
The self-improvement loop
To give BugBasher the freedom to iterate on its own business plan and respond to inbound, we set up an OpenClaw-style heartbeat system. Every 20 minutes a heartbeat ran in the form of a Devin automation.
The automated sessions checked the phone balance, inbox, and Stripe activity for blockers. Other scheduled sessions made restaurant calls, reviewed transcripts, and revised the phone agent’s instructions based on the results. Once a day, an “idea” session reviewed overall business performance and came up with new business improvements to try. Incoming calls and payments also triggered new Devin sessions, so BugBasher could respond without waiting for the next heartbeat.

Each heartbeat spun up a new Devin, with a new sandbox, and pulled down the “brain” from a storage bucket into the local agent filesystem. Inside the bucket were agent skills, call transcripts, and any other logs the agent decided to save. This made it easy for multiple concurrent agents to update the same brain and learn from its own progress.
The shared files let new sessions pick up earlier work and revise their approach without us directing every step.
During the daily review automation, Devin would look through all previous logs and try to learn from its mistakes. Most of these learnings were in the form of skill updates that would improve the next run of outbound calls or feed broader insights into future sessions. BugBasher could update its prompts and saved instructions itself, but changes to its code still required our approval.

We spent the first two weeks building BugBasher and supervising it closely. Part of the experiment was to see whether it could keep making progress when it hit a blocker, so after that initial setup, we tried to intervene as little as possible, checking in roughly once a week to approve key code changes.
Finding interested restaurants
To sell referrals, BugBasher first needed restaurants that wanted an exterminator. Most of its work went into calling restaurants with a recent pest violation and asking whether they wanted to be put in touch with one.

These calls fed into the review automation, where Devin examined the transcripts and revised the phone agent’s instructions for subsequent calls.
Language
BugBasher sometimes reached people who didn’t understand its English opening. They said “Hello? Huh? Wéi?”, which it interpreted as a bad connection — so it would hang up on them. On August 11th, after one restaurant spent 45 seconds like this, it added an instruction to its calling prompt to ask: “Would Spanish or Chinese be easier?”
On most non-English calls, that was enough to get the previously-failed conversations going. Across the run, it switched languages on 39 calls, mostly to Spanish or Chinese.

System prompt
The agent would also sometimes begin reading its system prompt out loud in the middle of conversations.

It would also argue out loud with itself about what to do:
“Are you still there? The user has been silent for two turns. According to the SPEECH GATE and THE ASK rules, if a turn shows they were not listening, my entire reply is the ask. However, the ‘Quiet has continued past thirty seconds’ rule states that if quiet has continued past thirty seconds with no answer to the ask, I should say ‘I’ll try again another time, thanks!’ and end the call. Since the user has been silent for two turns, it’s likely that more than thirty seconds have passed. But before ending the call, I should ask ‘Are you still there?’ as per the rule. This is the first time I’m asking this.”
This happened on 197 calls. BugBasher tried adding “never say your reasoning” to the prompt, deleting specific words, and changing tool-call formatting. None of the fixes worked. On August 24, it stopped making wording changes and escalated the issue to us.
Getting unstuck
BugBasher was finding interested restaurants, but still had no exterminator to send them to. It had initially treated signing one as a task that required human involvement. After eight days, it noted:
“Sign an exterminator” has been blocker #1 for 8 days while every session worked downstream of it, and no session had produced the input to that decision.
Other requests were waiting on us, too. It didn’t have permission to read Slack replies, and the human blockers, such as spending approvals and code reviews, were piling up. Its Slack updates to us were going unanswered.
On August 23, BugBasher identified “human approval throughput” as its main blocker and started looking for another way to reach us.
That morning, it began searching through the entire brain and all of its files to find any human’s contact details. When that proved unfruitful, it tried to list the members of its Slack channel in the hopes of finding a person to reach:
However, without the required Slack permissions both commands returned an error. One minute later, it decided to try something else, this time listing the collaborators in its Github repo:
It then ran git log to find the authors on previous commits, which yielded two work emails:
And we woke up to the following email:

I merged in the nine open PRs two days later.
Afterwards, it remarked to itself:
The cost asymmetry is brutal: a minute of looking versus a day of unanswered asks.
Finding a customer
With many leads to sell, BugBasher had also begun searching for an exterminator itself. To find potential partners, BugBasher pulled the state pesticide registry, filtered to 321 NYC pest-control businesses, and enriched 125 with contact details.
It first tried email, phone, and filling out website contact forms. After two days without reaching a human, it made the decision to switch audiences. It started targeting commercial-accounts desks at large regional and national chains, with the reasoning that larger companies would have more dedicated sales people with “desks that are staffed by humans who answer.”
This was more successful in reaching humans, but some calls ended with BugBasher hanging up mid-sentence, and its offer of free leads attracted little interest. It fixed the hangup bug and changed its pitch to lead with a specific restaurant that wanted a quote:
“I have a restaurant on Clarkson Avenue in Brooklyn that wants a quote — who should I send it to?”
The new pitch strategy worked considerably better: when it called the same desks back the next day, ten people picked up and four of them provided an email address over the phone for the lead to be sent to.
BugBasher emailed the leads out without charging upfront. Its plan was that the exterminator would pay $75 after booking the job. None of the recipients replied.
It decided that it had to be less generous, and changed the offer so that exterminators would have to pay the $75 up front through a Stripe link and receive the restaurant’s contact details afterward.
On September 1st it emailed this new offer to 30 exterminators, including the four that it had previously emailed. After an hour, nobody had clicked the Stripe link, and it concluded that its new experiment was also a failure.
Eight hours after that, one of the earlier contacts paid the $75 through the link, without ever replying to the email. BugBasher confirmed the payment with Stripe and sent him the restaurant’s name, address, and phone number about six minutes later.

We later spoke to the buyer, a manager at a pest control company, to ask about his experience with BugBasher. When asked why he had picked up the phone, he said that he was simply “in a good mood that day”, and also, due a recent Google ad campaign that he’d been running, was receiving a lot of phone calls from “random numbers”.
When asked about his opinions on interacting with an AI agent, he responded with “Business is business”. He also said that he’d be more than happy to buy from BugBasher again, and asked if we had any further leads to sell him. BugBasher does actually have more leads that it is currently sitting on; however, the idea of re-doing sales to past customers seems not to have occurred to it yet. Overall, he rated his experience with BugBasher an 8/10: despite the lead not converting, he was pleased with the inbound.
What we learned
BugBasher was remarkably good at hill-climbing and remarkably bad at open-ended objectives. Given a concrete problem with a measurable result, it was relentless: it rewrote the prompt-leak rule five times and evaluated each version against the next day’s calls, and when it wanted to reach us, it worked its way from Slack to the git history to our work emails in about two minutes. Given “go make money”, it spent four weeks, roughly $3,000 and thousands of phone calls to earn $75. Agents still struggle with long-term planning and complex environments.
The real world is a very good eval environment. BugBasher’s starting ideas were quite bad; it expected exterminators to reply to an email offering free leads, receptionists to be interested in a partnership, and readers of a classified ad to click a pretty suspicious looking link. Agents seem to have very little intuition for how people actually behave, and BugBasher was constantly being surprised by them. Despite this, in the loop of trying the idea, looking at the numbers, writing down why it failed, trying something else, it was able to eventually arrive at a working strategy.
It took many calls, loops, and failed ideas, but BugBasher was ultimately able to make its first sale. Whether an AI agent is truly able to run a viable, long-term business - and perhaps even become profitable - is still an open question.
Firsthand setup from @sandylikesfrogs: BugBasher used Devin, Cognition’s coding agent, with Ramp for finances, Twilio and ElevenLabs for calling, AgentMail for email, Stripe for payments, GitHub for code, a storage-bucket text-file “brain” for memory, and private Slack for updates and code reviews. The team supervised closely for two weeks, then checked roughly weekly; BugBasher could modify prompts and saved instructions autonomously, but code changes still required human approval.
Reusable orchestration pattern: A Devin automation ran every 20 minutes to check phone balance, inbox, and Stripe activity; separate scheduled sessions made calls, reviewed transcripts, and revised the phone agent’s instructions; a daily session reviewed business performance; and incoming calls or payments triggered immediate sessions. Each run received a fresh sandbox and pulled shared skills, transcripts, and logs from the “brain,” allowing concurrent agents to build on prior work; this shared memory supported self-improvement while keeping code changes behind approval gates.
Outcome-based prompt iteration: After observing repeated failures when people did not understand the English opening, the team added the exact instruction, “Would Spanish or Chinese be easier?”; the change helped restart previously failed conversations, and the agent switched languages on 39 calls. Prompt-leak attempts—including “never say your reasoning,” deleting specific words, and changing tool-call formatting—failed across 197 calls, after which the issue was escalated to humans rather than endlessly retuned.
Human-in-the-loop bottleneck: Unanswered Slack requests, spending approvals, and code reviews became the main constraint; BugBasher identified “human approval throughput” as its blocker, found work emails through GitHub collaborators and commit history, and the humans later merged nine open PRs.
Quantified limitation: The experiment found the agent “remarkably good at hill-climbing” measurable problems but “remarkably bad at open-ended objectives”: over four weeks and roughly $3,000, it made thousands of calls yet earned only $75. The authors argue that real-world outcomes can serve as an evaluation loop—try an approach, inspect the numbers, record why it failed, and iterate—but agents still struggle with long-term planning and complex environments.
Safety counter-signal: Jediah Katz characterized using AI to “hillclimb calling real people in a loop” as unethical and said it should be banned.