{"slug": "why-i-use-my-own-coding-agent", "title": "Why I Use My Own Coding Agent", "summary": "A developer who built the coding agent OneLoop argues that owning the agent layer lets them keep model choice independent of any single provider, citing OneLoop's support for a Codex subscription via OAuth, OpenRouter via API, and the OpenCode subscription, plus slash-command access to Claude and Google subscriptions. The developer runs OneLoop inside an Emacs comint buffer, intercepting its OSC 7501 status messages with a comint filter to update the mode line, and has published a binary distribution of OneSearch, a private lexical and semantic search tool over code and OneLoop sessions. The developer says session logging captured from the start produced historical records used to study agent effectiveness, and notes that writing a demo coding agent is easy while building a robust one for professional daily work is not.", "body_md": "The main reason I use my own coding agent is simple: modern LLMs are stochastic. They can hallucinate. I cannot change that part of the equation.\n\nBut the tools around the model are a different matter. The coding agent is a layer I can shape. I want control over how it talks to models, what tools it gives them, how sessions work, and where I interact with it. I cannot make the model deterministic, but I can make the surrounding workflow deterministic, observable and more suited to the way I work.\n\nBelow are a few points you might find interesting.\n\nThe first benefit is freedom to choose and combine models and providers without giving up the coding agent I use day to day. I can switch models, use different providers in the same session, or ask a one-off question without changing the rest of my workflow.\n\nI use OneLoop<sup>[1](#fn.oneloop)</sup> with a Codex subscription via OAuth. It\nalso supports OpenRouter via API and the OpenCode subscription (BTW,\nOpenCode Go is great and you should try it).\n\nNot every provider supports this. Some providers expect you to use their own coding agent, such as Claude Code and Antigravity. OneLoop lets me use my Claude or Google subscription via a slash command that lets me ask about the current conversation, request a critique focused on a particular aspect, or send a fresh one-shot question.\n\nThis is very important for me. I do not want my choice of agent to dictate how I interact with models, or a provider's subscription to dictate which interface I have to live in. Those things can change independently.\n\nUsing somebody else's coding agent means accepting its feature set and its assumptions about how you interface with LLMs. It means following their release schedule and adapting as the product changes. That may be a good trade for many people. For me, it often means working around decisions I would rather make myself.\n\nMost coding agents seem to assume that I want to work in a particular\nterminal UI or inside a particular IDE. I want the agent to live where\nI already work. I use **Emacs**, and because I control OneLoop, I can\nmake it work naturally with an Emacs `comint` buffer. I can give my\ncoding agent access to Emacs buffers so it can inspect its own output,\njust as I do, and make appropriate adjustments.\n\nA small example is my OneLoop mode configuration, a file in my\ndotfiles that I wrote to make OneLoop feel at home in an Emacs\n`comint` buffer. OneLoop reports its state and current model using\nOSC 7501 status messages. A `comint` filter function intercepts them\nand updates the buffer's mode line accordingly. One thing that really\nbothers me is how other coding agents force their UI state or\nnotifications on you and fill your screen with things that are pretty\nmuch useless to you. OneLoop stays out of the way and is just one\nkeystroke away (or a `/help` command is all you need). As a trivial\nexample, I show **computing…** in the mode line instead of\n**thinking…** when models are busy doing their thing.\n\nBecause I own the agent, I also own the session logging and metrics. I started capturing that information early, which gave me historical records I could study to understand what helps an agent work effectively. That experience led me to build OneSearch: lexical and semantic search over code and OneLoop sessions.\n\nI now use OneSearch with skills to get oriented in unfamiliar\ncodebases. It helps me and my coding agent find relevant code and\nsession history quickly, so I can build a useful mental model with\nless searching around and less wasted effort. OneSearch is still a\nprivate project, but I have published a binary distribution for people\nwho want to try it<sup>[2](#fn.onesearch)</sup>.\n\nWriting a demo coding agent is easy. Building a robust agent that I trust for professional, day-to-day work is not for the faint of heart.\n\nOneLoop supports different models and providers, each with its own protocols, authentication, tool-call behavior, and failure modes. Making those integrations reliable takes time. I have spent close to a year developing OneLoop, finding bugs, fixing them, and adding test coverage so a change in one path does not quietly break another. One needs to treat it like real production software: test it, maintain it, and keep checking that it still works as the systems around it change.\n\nThere is also a product judgment problem. It is easy to keep adding features because a model or provider makes something possible. It is harder to decide what belongs in the agent, what should stay outside it, and what will turn the tool into a hodgepodge of features I do not actually need. Owning the agent means owning those decisions too.\n\nSo the cost is not just the initial development time. It is the ongoing attention: engineering discipline, bug fixes, regression tests, and judgment about the feature set. I encourage people to build a coding agent as an exercise; it is a great way to understand how LLMs interact with systems and tools. But using your own agent professionally every day is a larger commitment. The leverage is real, but it is not free.\n\nOneLoop source repository:\n[github.com/oneness/OneLoop](https://github.com/oneness/OneLoop).\n\nOneSearch binary distribution:\n[github.com/oneness/OneSearch-dist](https://github.com/oneness/OneSearch-dist).", "url": "https://wpnews.pro/news/why-i-use-my-own-coding-agent", "canonical_source": "https://www.birkey.co/2026-10-24-why-i-use-my-own-coding-agent.html", "published_at": "2026-10-24 07:00:00+00:00", "updated_at": "2026-10-26 17:14:17.636323+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "large-language-models"], "entities": ["OneLoop", "OneSearch", "Emacs", "Codex", "OpenRouter", "OpenCode", "Claude Code", "Antigravity"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/why-i-use-my-own-coding-agent", "markdown": "https://wpnews.pro/news/why-i-use-my-own-coding-agent.md", "text": "https://wpnews.pro/news/why-i-use-my-own-coding-agent.txt", "jsonld": "https://wpnews.pro/news/why-i-use-my-own-coding-agent.jsonld"}}