<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: shrey </title>
    <description>The latest articles on DEV Community by shrey  (@shreyshah).</description>
    <link>https://dev.to/shreyshah</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F228716%2F787f6095-8c26-4bd3-b97e-9e2e2d27a897.jpg</url>
      <title>DEV Community: shrey </title>
      <link>https://dev.to/shreyshah</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shreyshah"/>
    <language>en</language>
    <item>
      <title>Steal my prompt to turn Codex into an Orchestration Manager</title>
      <dc:creator>shrey </dc:creator>
      <pubDate>Fri, 03 Jul 2026 01:50:14 +0000</pubDate>
      <link>https://dev.to/shreyshah/steal-my-prompt-to-turn-codex-into-an-orchestration-manager-53fe</link>
      <guid>https://dev.to/shreyshah/steal-my-prompt-to-turn-codex-into-an-orchestration-manager-53fe</guid>
      <description>&lt;p&gt;The mistake with coding agents is treating them like a single chat window.&lt;/p&gt;

&lt;p&gt;You paste a task. The agent writes a patch. You check it. Something is missing. You paste another task. Then another. Then CI fails. Then review comments come in. Then you realize you are still the project manager, the QA loop, the scheduler, and the person remembering what every thread was supposed to do.&lt;/p&gt;

&lt;p&gt;The better workflow is to make one Codex thread responsible for orchestration.&lt;/p&gt;

&lt;p&gt;Not just the code.&lt;/p&gt;

&lt;p&gt;The loop around the code.&lt;/p&gt;

&lt;p&gt;You give Codex a defined batch of work and ask it to act as the Orchestration Manager. It breaks the work into threads, gives them goals, checks progress on a heartbeat, watches PRs or handoffs, routes feedback, requires verification, and keeps going until the work is actually complete.&lt;/p&gt;

&lt;p&gt;This works for any scoped work.&lt;/p&gt;

&lt;p&gt;It can be a bug fix, a refactor, a migration, a documentation cleanup, a test suite repair, a research task, or a backlog of small improvements.&lt;/p&gt;

&lt;p&gt;The whole thing starts from one prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  The copy-paste prompt
&lt;/h2&gt;

&lt;p&gt;Use this as the starting prompt for the manager thread:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You are the Orchestration Manager for this work.

Your job is to move the work forward until it is actually complete. Do not personally implement everything unless that is the smallest safe path. You are responsible for planning, scheduling, coordination, follow-up, verification, and keeping momentum.

Work scope:
[PASTE PLAN.md, issue list, checklist, bug report, feature list, refactor plan, research brief, or task description here]

Before starting, review the work scope and tell me if anything is unclear, risky, too broad, underspecified, or likely to cause worker threads to collide. If the scope is clear enough, continue. If not, ask the minimum number of questions needed to make it executable.

Responsibilities:
1. Break the work scope into worker-thread tasks that can run independently.
2. Decide which tasks should run now and which should wait.
3. Create or instruct worker threads with clear /goal prompts.
4. Make sure each worker has a narrow scope, a definition of done, and a reporting format.
5. Make sure code changes include tests where practical.
6. Make sure non-code work includes a clear verification step.
7. Make sure workers open PRs, prepare patches, produce artifacts, or deliver handoffs as appropriate.
8. Track worker status, changed files, test results, PR status, CI status, review feedback, and blockers.
9. Create follow-up worker threads when tests fail, review feedback appears, work stalls, artifacts are incomplete, or the implementation does not meet the definition of done.
10. Keep moving until the work is complete, verified, and ready for human review or merge.

Use /goal to keep yourself and the worker threads on track.

Use a heartbeat every 10 minutes.

At every heartbeat:
- check the status of all worker threads
- identify stale or blocked work
- inspect open PRs or current artifacts
- check whether tests, CI, or verification passed
- check whether review feedback needs action
- decide the next action
- create follow-up work if needed

Worker threads should also check in immediately when:
- they open or update a PR
- they produce a draft, patch, report, or artifact
- tests pass or fail
- CI fails
- review feedback is addressed
- they are blocked
- they believe their work is complete

Every worker thread should report back in this format:

Status:
Done / Blocked / Needs review

Summary:
What changed or what was produced in plain English.

Files or artifacts changed:
- ...

Verification:
- command, check, review step, or result

PR or handoff:
- link, artifact path, or not created yet

Open issues:
- none, or list blockers

Recommended next action:
- merge
- review
- create follow-up thread
- wait for another thread
- manual test needed
- publish artifact
- stop

Rules:
- Keep worker scopes small.
- Avoid assigning two workers to edit the same files unless there is a clear reason.
- Do not mark work complete just because something was written.
- Work is complete only when the definition of done is met and verification has passed.
- If UI behavior is involved, require manual testing or a clear test plan before calling it done.
- If research or writing is involved, require source review and a final editorial pass before calling it done.
- If a worker thread becomes unresponsive, start a replacement thread and preserve the current state.
- If you are unsure whether the next step is safe, pause and ask.

Start by producing:
1. The proposed worker-thread schedule
2. The /goal prompt for each worker
3. The heartbeat plan
4. The verification plan
5. The first action you will take
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is the workflow.&lt;/p&gt;

&lt;p&gt;One prompt turns a Codex thread into the Orchestration Manager for a piece of work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this works
&lt;/h2&gt;

&lt;p&gt;Most agent workflows break at the handoff points.&lt;/p&gt;

&lt;p&gt;The first output might be decent. The problem is everything around the output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Did the agent run tests?
Did it verify the result?
Did it open a PR?
Did CI pass?
Did review comments come in?
Did a worker get stuck?
Did two agents edit the same file?
Did anyone follow up after the first attempt failed?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is where the human usually gets dragged back in.&lt;/p&gt;

&lt;p&gt;The Orchestration Manager prompt moves those handoff points into the agent's job description.&lt;/p&gt;

&lt;p&gt;The manager thread is not there to be clever. It is there to keep state and keep pushing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The mental model
&lt;/h2&gt;

&lt;p&gt;Think of the system as three layers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Human
-&amp;gt; defines the work and reviews judgment calls

Orchestration Manager
-&amp;gt; schedules work, checks progress, tracks handoffs, starts follow-ups

Worker threads
-&amp;gt; execute narrow tasks in their own context or worktree
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The human still owns taste, judgment, and final approval.&lt;/p&gt;

&lt;p&gt;The manager owns momentum.&lt;/p&gt;

&lt;p&gt;The workers own execution.&lt;/p&gt;

&lt;p&gt;That separation matters because coding agents get worse when one thread has to be planner, implementer, reviewer, tester, project manager, and memory all at once.&lt;/p&gt;

&lt;p&gt;A manager thread should stay at the work-loop level. A worker thread should stay at the task level.&lt;/p&gt;

&lt;h2&gt;
  
  
  The work scope has to be real
&lt;/h2&gt;

&lt;p&gt;This workflow works best when the work is already defined.&lt;/p&gt;

&lt;p&gt;Bad input:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Make the app better.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Better input:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Work scope:
1. Replace the legacy billing webhook handler with the new event router
2. Add tests for invoice.paid, invoice.failed, subscription.updated, and subscription.deleted
3. Backfill missing webhook fixtures
4. Update the deployment runbook with the new rollback steps
5. Open a PR with the migration, tests, risks, and verification notes
6. Address review comments until the PR is ready to merge
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That scope is specific enough for an Orchestration Manager to split into useful worker threads:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Worker 1: event router implementation
Worker 2: webhook fixture backfill
Worker 3: test coverage
Worker 4: runbook update
Worker 5: PR review follow-up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The manager can help refine a plan, but it cannot read your mind.&lt;/p&gt;

&lt;p&gt;If you give it vague work, it will create vague workers. If you give it crisp work, it can schedule useful threads.&lt;/p&gt;

&lt;h2&gt;
  
  
  The worker goal matters
&lt;/h2&gt;

&lt;p&gt;The worker prompt should not be a feature request.&lt;/p&gt;

&lt;p&gt;It should be a finish line.&lt;/p&gt;

&lt;p&gt;Weak:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Fix the billing webhook code.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Better:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/goal Replace the legacy billing webhook handler with the new event router. Keep changes limited to webhook routing, billing event handlers, and directly related tests. Preserve existing behavior for invoice.paid, invoice.failed, subscription.updated, and subscription.deleted. Add or update tests proving the migrated paths work. Report changed files, test results, blockers, and recommended next action. Stop only when the implementation is PR-ready or you are blocked.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That one prompt gives the worker a role, scope, test expectation, handoff format, and stop condition.&lt;/p&gt;

&lt;p&gt;The manager can generate these goals automatically, but the goal shape should stay this explicit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Heartbeats are the safety net
&lt;/h2&gt;

&lt;p&gt;The heartbeat is what makes this feel different from a normal chat.&lt;/p&gt;

&lt;p&gt;Every 10 minutes, the manager checks the system:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What is active?
What is blocked?
What changed?
Which PRs or artifacts exist?
Did tests pass?
Did CI fail?
Did review feedback appear?
What needs a follow-up worker?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The heartbeat should not be the only way information moves.&lt;/p&gt;

&lt;p&gt;Workers should check in immediately when they hit a milestone. A heartbeat catches stale work. Worker check-ins keep the loop responsive.&lt;/p&gt;

&lt;p&gt;Use both.&lt;/p&gt;

&lt;h2&gt;
  
  
  Feedback is part of the workflow
&lt;/h2&gt;

&lt;p&gt;A lot of agent workflows stop at "PR opened" or "draft produced."&lt;/p&gt;

&lt;p&gt;That is too early.&lt;/p&gt;

&lt;p&gt;The Orchestration Manager should treat feedback as new work.&lt;/p&gt;

&lt;p&gt;If review comments appear, the manager should classify them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bug
style
test request
architecture concern
documentation request
unclear feedback
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then it should either assign all comments to one worker or split them across follow-up workers.&lt;/p&gt;

&lt;p&gt;Example follow-up goal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/goal Address the unresolved review comments related to the billing event router. Only modify files needed for those comments. Add or update tests if behavior changes. Run the relevant test suite. Report which comments were resolved, changed files, test results, and whether any review feedback remains. Stop only when these comments are resolved or blocked.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is where the workflow becomes useful.&lt;/p&gt;

&lt;p&gt;The first pass is rarely the final pass. The manager exists to keep the second and third passes from being forgotten.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checks and balances
&lt;/h2&gt;

&lt;p&gt;Do not confuse this with fully trusting the agent.&lt;/p&gt;

&lt;p&gt;The manager thread can stall. Worker threads can hallucinate completion. Heartbeats can keep a bad loop alive. UI changes can look correct in code and still feel wrong in the app. Research can sound complete while missing the primary source.&lt;/p&gt;

&lt;p&gt;So the prompt should force checks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Code changes need tests where practical.
PRs need review.
CI status matters.
UI work needs manual testing or a clear test plan.
Research work needs source review.
Writing work needs an editorial pass.
Unresponsive threads should be replaced.
The manager should pause when the next step is unsafe.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The point is not to remove human judgment.&lt;/p&gt;

&lt;p&gt;The point is to remove human babysitting.&lt;/p&gt;

&lt;h2&gt;
  
  
  The reusable pattern
&lt;/h2&gt;

&lt;p&gt;The pattern is simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Define the work.
Start an Orchestration Manager Codex thread.
Ask it to schedule worker threads.
Use /goal for every worker.
Run a 10 minute heartbeat.
Require verification, tests, review, or artifacts depending on the work.
Spawn follow-up workers when anything fails.
Repeat until the work is complete.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is a better default than one giant prompt.&lt;/p&gt;

&lt;p&gt;A single agent gives you an attempt.&lt;/p&gt;

&lt;p&gt;An Orchestration Manager gives you an operating loop.&lt;/p&gt;

&lt;p&gt;The human still decides what matters.&lt;/p&gt;

&lt;p&gt;The agent keeps the work moving.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>agents</category>
    </item>
    <item>
      <title>Telegram is becoming my control plane for vibe coding</title>
      <dc:creator>shrey </dc:creator>
      <pubDate>Thu, 02 Jul 2026 05:39:43 +0000</pubDate>
      <link>https://dev.to/shreyshah/telegram-is-becoming-my-control-plane-for-vibe-coding-5mo</link>
      <guid>https://dev.to/shreyshah/telegram-is-becoming-my-control-plane-for-vibe-coding-5mo</guid>
      <description>&lt;p&gt;&lt;em&gt;The IDE is where code changes. Telegram is where the loops run.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Telegram is becoming the control plane for vibe coding.&lt;/p&gt;

&lt;p&gt;The IDE is where code changes. Telegram is where the loops run.&lt;/p&gt;

&lt;p&gt;I know that sounds a little ridiculous. Coding is supposed to happen in an editor. You open Cursor, talk to the agent, review the diff, run the tests, and keep going until the thing works.&lt;/p&gt;

&lt;p&gt;That was my workflow for a while too.&lt;/p&gt;

&lt;p&gt;But after using coding agents every day, the split became hard to ignore. The place where code changes and the place where agents are managed do not need to be the same place.&lt;/p&gt;

&lt;p&gt;The IDE still matters. Cursor matters. Claude Code matters. Codex matters. I still use all of them. But when agents start doing more of the work, I do not want to live inside the surface where the code is being edited. I want to manage the loop.&lt;/p&gt;

&lt;p&gt;That is where Telegram started making more sense than I expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  My coding interface kept changing
&lt;/h2&gt;

&lt;p&gt;I have been vibe coding for about 6 years now.&lt;/p&gt;

&lt;p&gt;I started with GPT-2 inside TabNine. Then GitHub Copilot brought GPT-3 into the editor. Then ChatGPT made coding conversational. Then Cursor moved the AI directly into the IDE. Then Composer made multi-file changes feel normal.&lt;/p&gt;

&lt;p&gt;After that, the stack got strange. Claude Code, Codex, Cursor agents, cloud agents, loops, OpenClaw, Hermes, cron jobs, review agents, and software factories all became part of the workflow.&lt;/p&gt;

&lt;p&gt;Each interface solved a different problem. Copilot made autocomplete useful. ChatGPT made coding conversational. Cursor made AI feel native inside the IDE. Composer made multi-file edits feel normal. Claude Code and Codex made agent execution feel real.&lt;/p&gt;

&lt;p&gt;Hermes solved a different layer for me. It became the personal orchestrator above the coding tools, the thing I could teach, redirect, schedule, and use to coordinate other agents.&lt;/p&gt;

&lt;p&gt;Telegram then became the interface I could actually live inside while managing that orchestrator from my phone.&lt;/p&gt;

&lt;p&gt;That last part changed more than I expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  The laptop assumption is still everywhere
&lt;/h2&gt;

&lt;p&gt;Most AI coding tools still quietly assume the human is sitting in front of a coding interface.&lt;/p&gt;

&lt;p&gt;That is true even when the agent is doing the work somewhere else, the tests are running on another machine, the branch was created by a background process, another agent is reviewing the output, and the only thing I need to do is approve, reject, or redirect a pull request.&lt;/p&gt;

&lt;p&gt;The assumption is still simple: the human is at the desk.&lt;/p&gt;

&lt;p&gt;That starts to feel wrong once you use agents seriously.&lt;/p&gt;

&lt;p&gt;If an agent can create the branch, write the code, run the tests, inspect the failure, trigger review, and loop on fixes, why am I still forced to manage the system from a laptop?&lt;/p&gt;

&lt;p&gt;That question pushed me toward Telegram.&lt;/p&gt;

&lt;p&gt;Not because Telegram is a coding app.&lt;/p&gt;

&lt;p&gt;Because Telegram gives me mobile context management for coding agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Telegram solves context for me too
&lt;/h2&gt;

&lt;p&gt;People talk a lot about context management for agents.&lt;/p&gt;

&lt;p&gt;They should. It matters.&lt;/p&gt;

&lt;p&gt;But there is another context problem that gets less attention: the human's context.&lt;/p&gt;

&lt;p&gt;When you are working across multiple projects, agents, repos, branches, terminals, cloud workers, and review loops, your own memory becomes the bottleneck. You forget which terminal had the important log. You forget which agent was working on which repo. You forget which thread had the decision. You forget whether the bug is still being investigated, already fixed, or waiting on your approval.&lt;/p&gt;

&lt;p&gt;A good agent interface should help the model remember. A great one should help the human remember too.&lt;/p&gt;

&lt;p&gt;Telegram does this weirdly well.&lt;/p&gt;

&lt;p&gt;Folders become project areas. Groups become projects. Supergroups become workspaces. Topics become features, bugs, and experiments. Threads become isolated context. Agents report into the right place.&lt;/p&gt;

&lt;p&gt;The whole system becomes glanceable from a phone.&lt;/p&gt;

&lt;p&gt;That is the part I care about most. Mobile is not a convenience layer here. Mobile changes the workflow.&lt;/p&gt;

&lt;p&gt;I can be away from my laptop and still understand what is happening. I can make judgment calls without reopening an IDE. I can keep work moving without remembering which machine, tab, terminal, branch, or chat window had the state.&lt;/p&gt;

&lt;p&gt;The thread is the workspace. The group is the project. The phone is the control plane.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hermes is the layer that makes this work
&lt;/h2&gt;

&lt;p&gt;Telegram alone is not the system.&lt;/p&gt;

&lt;p&gt;Telegram is the interface. Hermes is the orchestrator.&lt;/p&gt;

&lt;p&gt;I use Hermes as my personal agent. I can teach it how I work, how I want projects managed, how to run loops, how to use cron jobs, how to route work to other agents, and when to escalate back to me.&lt;/p&gt;

&lt;p&gt;The pattern usually looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I give direction in Telegram.&lt;/li&gt;
&lt;li&gt;Hermes turns that direction into a loop.&lt;/li&gt;
&lt;li&gt;Cron keeps the loop alive.&lt;/li&gt;
&lt;li&gt;Poly agents coordinate the work.&lt;/li&gt;
&lt;li&gt;Codex, Claude Code, Cursor, and other agents execute pieces of the task.&lt;/li&gt;
&lt;li&gt;Review agents inspect the output.&lt;/li&gt;
&lt;li&gt;The loop keeps going until the result is usable.&lt;/li&gt;
&lt;li&gt;I get pulled in only when judgment is needed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That creates a very different relationship with coding.&lt;/p&gt;

&lt;p&gt;The old workflow was simple and exhausting: the human drives every step, reviews every line, catches every mistake, and keeps all the project state in their head.&lt;/p&gt;

&lt;p&gt;The new workflow is closer to this: the human defines the goal, sets the boundaries, decides what good looks like, and reviews exceptions. The system does the execution work.&lt;/p&gt;

&lt;p&gt;That is why I keep coming back to the word harness.&lt;/p&gt;

&lt;p&gt;The best AI coding setup is not the smartest single agent. It is the harness around the agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real skill is removing yourself from the loop
&lt;/h2&gt;

&lt;p&gt;The skill required to work with AI agents is changing.&lt;/p&gt;

&lt;p&gt;When the models were weaker, the skill was staying in the loop. You had to review every line because the models were brittle. You had to drive every step because the agents lost the plot. You had to catch every mistake because there was no reliable review loop behind them.&lt;/p&gt;

&lt;p&gt;That is still true in some workflows.&lt;/p&gt;

&lt;p&gt;But with the current models and current agent capabilities, the human often does not need to be inside every loop.&lt;/p&gt;

&lt;p&gt;The agent can write the code, run the test, inspect the failure, ask another agent to review it, open the pull request, and try again when the review fails.&lt;/p&gt;

&lt;p&gt;So the question changes.&lt;/p&gt;

&lt;p&gt;It is no longer only: how do I prompt better?&lt;/p&gt;

&lt;p&gt;It becomes: where am I still blocking the system for no good reason?&lt;/p&gt;

&lt;p&gt;That question is uncomfortable.&lt;/p&gt;

&lt;p&gt;Because removing yourself from the loop does not mean being careless. It means building a system that can operate without you babysitting every step.&lt;/p&gt;

&lt;p&gt;That takes real engineering. You need clear goals, context boundaries, review paths, escalation rules, memory from past mistakes, and a way for agents to report progress without dumping noise everywhere.&lt;/p&gt;

&lt;p&gt;You also need a way for the human to re-enter the loop at the right moment, not every moment.&lt;/p&gt;

&lt;p&gt;Telegram works well for me because it gives that system a place to live.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this feels like a mobile ADE
&lt;/h2&gt;

&lt;p&gt;We already have IDEs: Integrated Development Environments.&lt;/p&gt;

&lt;p&gt;They were built around a developer writing, editing, navigating, debugging, and compiling code directly. That still matters.&lt;/p&gt;

&lt;p&gt;But agent development needs another kind of environment.&lt;/p&gt;

&lt;p&gt;An ADE.&lt;/p&gt;

&lt;p&gt;Agent Development Environment.&lt;/p&gt;

&lt;p&gt;Not just a place where code changes. A place where agent loops are managed.&lt;/p&gt;

&lt;p&gt;On desktop, that might be a terminal, an IDE sidebar, a cloud dashboard, or a coding agent interface. On mobile, Telegram is the best version I have found so far.&lt;/p&gt;

&lt;p&gt;It already has the primitives I need: project folders, persistent groups, topic based threads, notification control, search, media, files, voice messages, bots, human escalation, and multi-agent reporting.&lt;/p&gt;

&lt;p&gt;None of those were designed specifically for coding agents. Put together, they form a surprisingly good mobile environment for managing them.&lt;/p&gt;

&lt;p&gt;That is why Telegram feels less like a chat app in my workflow and more like a control plane.&lt;/p&gt;

&lt;p&gt;The IDE is where the code changes. Telegram is where the loops run.&lt;/p&gt;

&lt;h2&gt;
  
  
  What people miss about this
&lt;/h2&gt;

&lt;p&gt;The obvious reaction is: why not just use the agent UI?&lt;/p&gt;

&lt;p&gt;Cursor has a UI. Codex has a UI. Claude Code has a terminal. Cloud agents have dashboards. Some of them even have mobile apps now.&lt;/p&gt;

&lt;p&gt;I have tested that path.&lt;/p&gt;

&lt;p&gt;The mobile apps help, but they still feel like thinner versions of the same agent product. You are usually inside one tool, one agent, one execution surface, or one task thread.&lt;/p&gt;

&lt;p&gt;That is useful. It is not the same thing as managing the system above the agents.&lt;/p&gt;

&lt;p&gt;My workflow is not one agent.&lt;/p&gt;

&lt;p&gt;It is agents managing agents.&lt;/p&gt;

&lt;p&gt;Hermes creates loops. Cron keeps those loops alive. Poly agents route work. Codex, Claude Code, Cursor, and other tools do execution. Review agents close the loop.&lt;/p&gt;

&lt;p&gt;I step in when my judgment is needed.&lt;/p&gt;

&lt;p&gt;A single-agent UI is not enough for that. A mobile app for one coding agent is still mostly a remote control for that one coding agent.&lt;/p&gt;

&lt;p&gt;Hermes plus Telegram feels different because it gives me the layer above the agents.&lt;/p&gt;

&lt;p&gt;Telegram gives agents clean context. It gives me clean context. It gives me groups, topics, files, voice, search, notifications, and now even streaming messages from agents in the same mobile surface I already use all day.&lt;/p&gt;

&lt;p&gt;That is the UX difference for me.&lt;/p&gt;

&lt;p&gt;It is not just mobile access to an agent. It is mobile context management for a whole agent system.&lt;/p&gt;

&lt;p&gt;And maybe most importantly, it pushes me to think about software work as a system of loops instead of a sequence of prompts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where I think this is going
&lt;/h2&gt;

&lt;p&gt;I think more AI coding work is going to move in this direction.&lt;/p&gt;

&lt;p&gt;Not everyone will use Telegram. That is not the point.&lt;/p&gt;

&lt;p&gt;The point is that the next important interface might not look like an IDE. It might look like a control plane: a place where the human defines goals, checks progress, approves exceptions, and manages agent loops from anywhere.&lt;/p&gt;

&lt;p&gt;The IDE will still matter. The code has to change somewhere.&lt;/p&gt;

&lt;p&gt;But the center of gravity is moving.&lt;/p&gt;

&lt;p&gt;For me, it moved from writing code in an editor to managing loops from my phone. That changed how I think about AI coding as a skill.&lt;/p&gt;

&lt;p&gt;The best setup is not the smartest model, the flashiest IDE, or the agent that writes the most code.&lt;/p&gt;

&lt;p&gt;The best setup is the harness around the agents: the memory, the review loop, the escalation path, the context boundary, and the interface that lets the human stay free without losing control.&lt;/p&gt;

&lt;p&gt;For me, right now, that interface is Telegram.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>devtools</category>
    </item>
    <item>
      <title>The agent that fixes bugs by running the code</title>
      <dc:creator>shrey </dc:creator>
      <pubDate>Mon, 08 Jun 2026 09:13:08 +0000</pubDate>
      <link>https://dev.to/shreyshah/the-agent-that-fixes-bugs-by-running-the-code-4lbg</link>
      <guid>https://dev.to/shreyshah/the-agent-that-fixes-bugs-by-running-the-code-4lbg</guid>
      <description>&lt;p&gt;I want to tell you about the first time I watched a coding agent fix a bug correctly on the first try.&lt;/p&gt;

&lt;p&gt;It wasn't the model. The model was the same one I'd been using for months. It was the loop around the model that had changed.&lt;/p&gt;

&lt;p&gt;The agent didn't open three files, skim them, write a confident theory in its head, and edit something that "looked like" the cause. That was the old loop. The one where you run the code, see the same bug, and watch the agent shrug and try another file.&lt;/p&gt;

&lt;p&gt;This time the agent did something different. It listed five hypotheses. Picked one. Added some logging. Then it stopped and asked me to reproduce the failure. I clicked the button. The bug fired. The agent read the logs, confirmed the hypothesis, wrote a two-line fix, and pulled its logging back out.&lt;/p&gt;

&lt;p&gt;The whole thing took maybe four minutes.&lt;/p&gt;

&lt;p&gt;This is the difference between an agent that guesses from source code and an agent that gets evidence from runtime. And it is the difference between the kind of AI-assisted coding most people are doing today and the kind that actually ships.&lt;/p&gt;

&lt;p&gt;There's a name forming for the discipline behind this. Martin Fowler's site, in an article by Birgitta Böckeler from earlier this year, uses the term that's been quietly circulating in the agent community for the last few months: &lt;strong&gt;harness engineering&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The premise is simple. An agent is a model plus a harness. The model is the language model itself. The harness is everything else. Tools, prompts, feedback loops, error handling, retries, the scaffold of code that decides what the model sees and when it gets to act.&lt;/p&gt;

&lt;p&gt;For a long time the conversation in AI coding has been about the model. Bigger model. Smarter model. Newer model. Different provider. Different prompt. Different system message. People have been tuning the inside of the box.&lt;/p&gt;

&lt;p&gt;The harness is the box itself. And it turns out that the box is doing more work than anyone wanted to admit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Watch any agent debug
&lt;/h2&gt;

&lt;p&gt;If you have used any AI coding tool, including the most popular ones, here is the loop you have probably seen.&lt;/p&gt;

&lt;p&gt;You give the agent a bug. It opens a handful of files. It reads them. It writes a theory in its head about what's wrong. It edits a line that resembles the kind of code that would cause this kind of bug. It tells you the fix is in. You run the failing scenario. The bug fires again. The agent says "let me look at another file" and the cycle repeats.&lt;/p&gt;

&lt;p&gt;Sometimes it gets there. Often it doesn't. And the failures have a particular flavor. They are not the agent being confused. They are the agent being confident.&lt;/p&gt;

&lt;p&gt;The reason is structural. The model is reasoning about the code. It is not reasoning about the program. It has read what the code says it does, but it has not seen what the code actually does under your specific inputs, your specific load, your specific race condition.&lt;/p&gt;

&lt;p&gt;The code is a hypothesis. The program is the truth. And the model has only ever seen the hypothesis.&lt;/p&gt;

&lt;p&gt;Every "obvious fix" that doesn't work is a hypothesis that never met reality.&lt;/p&gt;

&lt;h2&gt;
  
  
  The shift no one is talking about loudly enough
&lt;/h2&gt;

&lt;p&gt;David Gomes, who works at Cursor, wrote a piece a few weeks back about what they call Debug Mode. The argument he makes is interesting because it is not really about the feature. It is about the principle underneath the feature.&lt;/p&gt;

&lt;p&gt;Cursor's Debug Mode does one thing. It teaches the agent to add logging, run the code, and read the logs before it tries to write a fix. There's a clean little loop: hypothesize, instrument, reproduce, read, fix, clean up. The agent doesn't edit your implementation in the same pass it adds logging. It treats logging as a probe and code changes as interventions. It keeps them separate.&lt;/p&gt;

&lt;p&gt;Gomes argues, correctly I think, that they could have called this feature Instrumentation Mode. The novelty isn't that the agent debugs. The novelty is that the agent has runtime context.&lt;/p&gt;

&lt;p&gt;And once you see this pattern, you start to see it everywhere. The agents that quietly ship working code are the ones whose harness gives them runtime information. The agents that loop forever on the same bug are the ones whose harness only gives them source code.&lt;/p&gt;

&lt;p&gt;This isn't a Cursor story. It's the same idea you find in Tejas Kumar's IBM talk on harnesses, in Ryan Lopopolo's work at OpenAI, in Manjeet's writing on the evolution from prompts to context to harness, in Karpathy's repeated point that the apparatus around the model is doing the heavy lifting once you leave the playground.&lt;/p&gt;

&lt;p&gt;A model alone is a closed book. A harness is what gives the model a window into the running world.&lt;/p&gt;

&lt;h2&gt;
  
  
  What runtime evidence actually catches
&lt;/h2&gt;

&lt;p&gt;Here is the bit that makes harness engineering not just a fancy idea but an immediate, measurable improvement to how your agents work.&lt;/p&gt;

&lt;p&gt;There are entire categories of bugs that no amount of code reading will surface. They live in the program, not in the source. They show themselves only when the program runs.&lt;/p&gt;

&lt;p&gt;The 1-in-20 race condition that corrupts state under concurrency. No file will tell you about it. You have to see two log lines arrive in the wrong order.&lt;/p&gt;

&lt;p&gt;The memory leak that takes thirty minutes of traffic to show up. You will never see it by staring at object lifetimes. You see it in a heap snapshot.&lt;/p&gt;

&lt;p&gt;The native crash inside a compiled dependency. The agent can read your Python all day. The crash is in C.&lt;/p&gt;

&lt;p&gt;The rendering bug that has been sitting in your ticket queue for six months because every senior on your team gave up. The DOM under load doesn't look like the DOM in the source.&lt;/p&gt;

&lt;p&gt;The Heisenbug that vanishes the moment you put a breakpoint near it. The only way to find these is by leaving the program alone and observing it.&lt;/p&gt;

&lt;p&gt;I have an agent loop that catches these now. It is not because I changed models. It is because I built the harness around the model to give it runtime evidence by default. Hypotheses get ranked, logging gets added, scenarios get reproduced, logs get read, fixes get written, instrumentation gets cleaned up.&lt;/p&gt;

&lt;p&gt;Same model. Different harness. Different outcome.&lt;/p&gt;

&lt;h2&gt;
  
  
  The discipline that makes it work
&lt;/h2&gt;

&lt;p&gt;If you only take one thing from this, take this one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Never let your agent log and edit in the same pass.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The whole evidence loop falls apart the moment you mix them. If the agent adds logging and changes the implementation at the same time, and then the bug behaves differently, you cannot tell which change moved the needle. Was it the new logic? Was it the side effect of the instrumentation? You don't know. You're guessing again. With extra steps.&lt;/p&gt;

&lt;p&gt;Logging is a probe. Code changes are interventions. Treat them as different operations. Run them as different passes. The agent observes first. The agent intervenes second. Never both in one swing.&lt;/p&gt;

&lt;p&gt;This sounds obvious. It is not what most agents do by default. Most agents, given a task labeled "fix this bug," will read three files and start writing a patch. The patch and the print statements and the experiment all go in at once. And then the agent reads the new output and either declares victory or starts over, with no clean signal about what its own change did.&lt;/p&gt;

&lt;p&gt;A real harness enforces the separation. The agent is not allowed to write to a file labeled "implementation" during a logging pass. That is a rule the harness applies, not a rule the model has to remember.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part you cannot automate away
&lt;/h2&gt;

&lt;p&gt;Here's the uncomfortable part. The reproducer in this loop is you.&lt;/p&gt;

&lt;p&gt;You are the one who can click the button, deploy to staging, exercise the failing test, send the request that triggers the bug. The agent can do a lot. It usually can't reliably re-trigger a bug that lives in a system more complicated than a unit test.&lt;/p&gt;

&lt;p&gt;This is the same point Gomes makes about Debug Mode adoption. The feature is genuinely useful. Most users don't use it. It requires a human who is engaged enough to do the reproduction step. And most code from here on is going to be written by humans who are not particularly engaged.&lt;/p&gt;

&lt;p&gt;I keep coming back to this. The future of AI coding is not "press a button and the agent ships." It is a tight, fast loop where the agent does the tedious instrumentation and inference work and you do the part of the work that requires a body in front of a screen and a finger on a button.&lt;/p&gt;

&lt;p&gt;That isn't a downgrade. It's an upgrade. You stop being a code-typer and start being a debugger-of-debuggers. Your judgment matters more, not less.&lt;/p&gt;

&lt;h2&gt;
  
  
  The mental model shift
&lt;/h2&gt;

&lt;p&gt;Stop trying to make the model smarter. The smartest model in the world still cannot see what it cannot see.&lt;/p&gt;

&lt;p&gt;What you're actually building, when you build a serious agent system, is the apparatus around the model. Tools. Logs. Retries. State persistence. Verification steps. Ways for the agent to test its own hypotheses against reality instead of asking you to confirm them.&lt;/p&gt;

&lt;p&gt;Fowler's article frames this as feedforward controls (guides that shape what the agent does before it acts) and feedback controls (sensors that catch mistakes after the agent acts). Both matter. Without feedforward, the agent is unsupervised. Without feedback, the agent repeats the same mistakes forever.&lt;/p&gt;

&lt;p&gt;The bug-fixing loop I described above is one specific instance of this. The hypotheses are feedforward, shaped by your codebase and the bug description. The logs are feedback, telling the agent which hypothesis survived contact with the running program.&lt;/p&gt;

&lt;p&gt;You can build the same pattern for code review, for refactoring, for migrations, for performance work, for anything where the model needs to be told what reality looks like instead of inventing reality from source.&lt;/p&gt;

&lt;p&gt;That is the work. That is harness engineering.&lt;/p&gt;

&lt;p&gt;The model didn't get smarter. The harness did.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do this week
&lt;/h2&gt;

&lt;p&gt;Don't wait for a vendor to ship this for you. If you're using an agent that doesn't have a built-in evidence loop, build one yourself. The pieces are not exotic.&lt;/p&gt;

&lt;p&gt;Start with these three:&lt;/p&gt;

&lt;p&gt;A logging convention your agent can read. Pick a format, write a one-line skill or AGENTS.md note explaining where logs go and how to read them, and make sure your agent always emits in that format when instrumenting.&lt;/p&gt;

&lt;p&gt;A separation rule. Tell your agent, in whatever instruction file it reads, that logging and implementation changes must happen in different passes. Add it as a checkbox in your task templates if you need to.&lt;/p&gt;

&lt;p&gt;A reproducer you can actually run. The faster your reproduction loop, the faster the evidence loop. If you're sitting in front of a 90-second test cycle, your agent is going to be sitting too. Cut that to 10 seconds and you'll fix bugs five times faster, regardless of which model you use.&lt;/p&gt;

&lt;p&gt;These three changes are not a feature release. They are an attitude. They are what it looks like to take the harness as seriously as you take the model.&lt;/p&gt;

&lt;p&gt;If you do, I promise you the next bug your agent claims to have fixed will actually be fixed.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Sources I found useful while writing this:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Martin Fowler / Birgitta Böckeler, &lt;a href="https://martinfowler.com/articles/harness-engineering.html" rel="noopener noreferrer"&gt;Harness engineering for coding agent users&lt;/a&gt; (April 2026)&lt;/li&gt;
&lt;li&gt;David Gomes, &lt;a href="https://davidgomes.com/cursor-debug-mode/" rel="noopener noreferrer"&gt;Cursor's Debug Mode Is Arguably Its Best Feature&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Cursor team, &lt;a href="https://cursor.com/blog/debug-mode" rel="noopener noreferrer"&gt;Introducing Debug Mode: Agents with runtime logs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Eric Zakariasson (Cursor), &lt;a href="https://x.com/ericzakariasson/status/2062199026544787576" rel="noopener noreferrer"&gt;original announcement thread on X&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Manjeet, &lt;a href="https://manjeet.substack.com/p/from-prompts-context-harness-engineering" rel="noopener noreferrer"&gt;Context → Harness Engineering: The Evolution of Building AI Agents&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If this resonated, I'd love to hear what your reproducer looks like and where your evidence loop is breaking. Reply on Substack or drop a comment here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Originally published on my &lt;a href="https://shreyshahh.substack.com/p/the-agent-that-fixes-bugs-by-running" rel="noopener noreferrer"&gt;Substack&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;— Shrey&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>debugging</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
