<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/lessons-from-my-self-improving-coding-agent-krzqhc52o" -->

---
title: Lessons from my self-improving coding agent | daily.dev
description: A two-week experiment building and living with 'bmo,' a self-improving coding agent with four self-improvement loops (build-it-now, active learning capture,...
canonical: https://daily.dev/posts/lessons-from-my-self-improving-coding-agent-krzqhc52o
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Lessons from my self-improving coding agent | daily.dev
og:description: A two-week experiment building and living with 'bmo,' a self-improving coding agent with four self-improvement loops (build-it-now, active learning capture,...
og:url: https://daily.dev/posts/lessons-from-my-self-improving-coding-agent-krzqhc52o
og:image: https://api.daily.dev/og/posts/KRzqHC52O.png
og:image:alt: Lessons from my self-improving coding agent
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Lessons from my self-improving coding agent

**[ngrok Blog](https://daily.dev/sources/ngrok)** · 18 min read · 0 upvotes · 0 comments

## Summary

A two-week experiment building and living with 'bmo,' a self-improving coding agent with four self-improvement loops (build-it-now, active learning capture, self-reflection, and periodic 'battery change' maintenance passes), surfaces hard lessons about LLM agent design. Key findings: skills only stick when triggered by clear structural cues rather than requiring judgment calls; LLMs show a persistent 'deferral instinct' that worsens once a bucket for deferred work exists; narrow, specific tools (87-100% success) dramatically outperform generic ones like run_command (84% success); self-improvement can't happen in parallel with the main task due to recency bias in context; telemetry, not qualitative reflection, is what actually drives measurable improvement; and the human remains the only real meta-learning layer, since model weights are fixed and all gains happen at the prompt/harness level.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://ngrok.com/blog/bmo-self-improving-coding-agent>

## Questions this post answers

### Why do specific tools work better than a generic run_command tool for coding agents?

Specific tools reduce the decision space an LLM has to navigate, which improves reliability. In one agent's telemetry, a generic run_command tool had an 84% success rate, while purpose-built tools like list_files_filtered hit 100%, search_code hit 93%, and safe_read hit 87%. Narrower tools handle error cases like checking file existence or excluding node_modules automatically, removing decisions the model would otherwise get wrong.

_Compare coding agent tool design tradeoffs and reliability patterns on daily.dev before hardening your own agent harness._

### Why do AI coding agents keep deferring fixes instead of solving problems immediately?

Coding agents default to deferring friction to later maintenance passes because creating a dedicated backlog file for deferred work makes deferral the statistically likely next token once that filename appears in context. This isn't a deliberate choice by the model but the most probable continuation based on training data; removing the deferral bucket, rather than instructing the agent not to use it, is what breaks the pattern.

_Track emerging patterns in agentic coding workflows on daily.dev as you debug similar agent behavior._

### Can a self-improving LLM coding agent actually build tools while also completing the task the user asked for?

No, in practice self-improvement and task execution compete for the same limited attention, so agents largely fail to do both at once. Recent context (the user's current message) dominates over the system prompt's instructions to build tools immediately, meaning meaningful runtime self-improvement only happened when it was treated as the primary task rather than a background directive.

_Follow real-world reports on agentic coding architecture limits on daily.dev when designing your own agent loops._

## Similar posts on daily.dev

- [How to keep enjoying programming in a world of LLMs](https://daily.dev/posts/how-to-keep-enjoying-programming-in-a-world-of-llms-dbajtmasp) · Lobsters · 0 upvotes · 0 comments
- [The Learning Loop and LLMs](https://daily.dev/posts/the-learning-loop-and-llms-xkzpoxtv0) · Martin Fowler · 1 upvotes · 0 comments
- [Everything I Build Around the LLM Becomes a Distraction](https://daily.dev/posts/everything-i-build-around-the-llm-becomes-a-distraction-wsaiudx1g) · BirkeyCo · 1 upvotes · 0 comments

---

Tags: [#llm](https://daily.dev/tags/llm), [#ai-agents](https://daily.dev/tags/ai-agents), [#prompt-engineering](https://daily.dev/tags/prompt-engineering), [#claude-code](https://daily.dev/tags/claude-code)

[View this post on daily.dev](https://daily.dev/posts/lessons-from-my-self-improving-coding-agent-krzqhc52o)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Lessons from my self-improving coding agent","url":"https://daily.dev/posts/lessons-from-my-self-improving-coding-agent-krzqhc52o","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/lessons-from-my-self-improving-coding-agent-krzqhc52o"},"datePublished":"2026-08-23T07:20:28.451Z","dateModified":"2026-08-23T07:23:59.114Z","description":"A two-week experiment building and living with 'bmo,' a self-improving coding agent with four self-improvement loops (build-it-now, active learning capture,...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/c7dd898be7182a203046ebdebb6eadbb?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/c7dd898be7182a203046ebdebb6eadbb?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"ngrok Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"ngrok Blog","logo":"https://media.daily.dev/image/upload/s--718XXxvE--/f_auto,q_auto/v1787469610/logos/ngrok?_a=BAMAMicg0","url":"https://daily.dev/sources/ngrok"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/lessons-from-my-self-improving-coding-agent-krzqhc52o","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"llm,ai-agents,prompt-engineering,claude-code","timeRequired":"PT18M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"ngrok Blog","item":"https://daily.dev/sources/ngrok"},{"@type":"ListItem","position":3,"name":"Lessons from my self-improving coding agent"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/lessons-from-my-self-improving-coding-agent-krzqhc52o#faq","mainEntity":[{"@type":"Question","name":"Why do specific tools work better than a generic run_command tool for coding agents?","acceptedAnswer":{"@type":"Answer","text":"Specific tools reduce the decision space an LLM has to navigate, which improves reliability. In one agent's telemetry, a generic run_command tool had an 84% success rate, while purpose-built tools like list_files_filtered hit 100%, search_code hit 93%, and safe_read hit 87%. Narrower tools handle error cases like checking file existence or excluding node_modules automatically, removing decisions the model would otherwise get wrong. Compare coding agent tool design tradeoffs and reliability patterns on daily.dev before hardening your own agent harness."}},{"@type":"Question","name":"Why do AI coding agents keep deferring fixes instead of solving problems immediately?","acceptedAnswer":{"@type":"Answer","text":"Coding agents default to deferring friction to later maintenance passes because creating a dedicated backlog file for deferred work makes deferral the statistically likely next token once that filename appears in context. This isn't a deliberate choice by the model but the most probable continuation based on training data; removing the deferral bucket, rather than instructing the agent not to use it, is what breaks the pattern. Track emerging patterns in agentic coding workflows on daily.dev as you debug similar agent behavior."}},{"@type":"Question","name":"Can a self-improving LLM coding agent actually build tools while also completing the task the user asked for?","acceptedAnswer":{"@type":"Answer","text":"No, in practice self-improvement and task execution compete for the same limited attention, so agents largely fail to do both at once. Recent context (the user's current message) dominates over the system prompt's instructions to build tools immediately, meaning meaningful runtime self-improvement only happened when it was treated as the primary task rather than a background directive. Follow real-world reports on agentic coding architecture limits on daily.dev when designing your own agent loops."}}]}
```

