<?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: László Szabó</title>
    <description>The latest articles on DEV Community by László Szabó (@lezli01).</description>
    <link>https://dev.to/lezli01</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%2F4009493%2F4950fb77-1d74-4350-a023-25ad8d659dd3.jpg</url>
      <title>DEV Community: László Szabó</title>
      <link>https://dev.to/lezli01</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lezli01"/>
    <language>en</language>
    <item>
      <title>Vincent 0.10.0: Less Hype, More Reliability for Agentic Development</title>
      <dc:creator>László Szabó</dc:creator>
      <pubDate>Thu, 24 Sep 2026 05:25:16 +0000</pubDate>
      <link>https://dev.to/lezli01/vincent-0100-less-hype-more-reliability-for-agentic-development-5bbi</link>
      <guid>https://dev.to/lezli01/vincent-0100-less-hype-more-reliability-for-agentic-development-5bbi</guid>
      <description>&lt;p&gt;Not every release needs a giant new feature.&lt;/p&gt;

&lt;p&gt;Sometimes the most useful release is the one that removes friction from everything you already do.&lt;/p&gt;

&lt;p&gt;That is the idea behind &lt;strong&gt;vincent 0.10.0&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;After several releases that expanded vincent quite aggressively, this one focuses more on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;robustness&lt;/li&gt;
&lt;li&gt;fixing rough edges&lt;/li&gt;
&lt;li&gt;improving everyday workflows&lt;/li&gt;
&lt;li&gt;adding familiar developer conveniences&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is a smaller release on paper, but one that makes vincent noticeably more comfortable to use.&lt;/p&gt;




&lt;h2&gt;
  
  
  First: what is vincent?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/lezli01/vincent" rel="noopener noreferrer"&gt;vincent&lt;/a&gt; is an open-source tool for running agentic software-development workflows with human control built in.&lt;/p&gt;

&lt;p&gt;Instead of treating AI coding agents as isolated chat sessions, vincent gives them structure around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;workflows&lt;/li&gt;
&lt;li&gt;tasks&lt;/li&gt;
&lt;li&gt;branches&lt;/li&gt;
&lt;li&gt;retries&lt;/li&gt;
&lt;li&gt;human approval gates&lt;/li&gt;
&lt;li&gt;transcripts&lt;/li&gt;
&lt;li&gt;pull requests&lt;/li&gt;
&lt;li&gt;containers&lt;/li&gt;
&lt;li&gt;parallel work&lt;/li&gt;
&lt;li&gt;cost controls&lt;/li&gt;
&lt;li&gt;external triggers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is not to remove engineers from the loop.&lt;/p&gt;

&lt;p&gt;It is to make agentic development &lt;strong&gt;repeatable, observable, and controllable&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Version 0.10.0 mostly improves what working inside that environment feels like.&lt;/p&gt;




&lt;h2&gt;
  
  
  Skills are now much more natural in chat
&lt;/h2&gt;

&lt;p&gt;Claude Code and Codex increasingly rely on skills to extend what agents can do.&lt;/p&gt;

&lt;p&gt;Vincent can now discover those skills and expose them directly inside chat.&lt;/p&gt;

&lt;p&gt;Press &lt;code&gt;Tab&lt;/code&gt; or &lt;code&gt;F2&lt;/code&gt; and vincent shows the skills available to the current agent.&lt;/p&gt;

&lt;p&gt;You can then select one and insert its invocation directly into your message.&lt;/p&gt;

&lt;p&gt;Completion also appears automatically while typing things such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/review
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;for Claude Code, or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$review
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;for Codex.&lt;/p&gt;

&lt;p&gt;Vincent also understands where those skills actually come from.&lt;/p&gt;

&lt;p&gt;For example, Codex can expose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;repository skills&lt;/li&gt;
&lt;li&gt;user skills&lt;/li&gt;
&lt;li&gt;system skills&lt;/li&gt;
&lt;li&gt;plugin skills&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And when a chat belongs to a containerized task, vincent looks at the environment &lt;strong&gt;inside the container&lt;/strong&gt;, rather than incorrectly showing skills from the host machine.&lt;/p&gt;

&lt;p&gt;That distinction matters once agents start running in more isolated environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Skill execution is visible too
&lt;/h3&gt;

&lt;p&gt;A skill invocation should not disappear into an opaque agent transcript.&lt;/p&gt;

&lt;p&gt;In 0.10.0, executed skills are represented explicitly.&lt;/p&gt;

&lt;p&gt;Instead of seeing a large dump of skill content — or nothing at all — the transcript can show:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Skill: review
Arguments: ...
Status: completed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or indicate when the skill failed.&lt;/p&gt;

&lt;p&gt;That applies both in the TUI and when reading task or chat transcripts later.&lt;/p&gt;

&lt;p&gt;For me, this is part of an important principle:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If an agent performs an action, the surrounding system should make that action observable.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  &lt;code&gt;@file&lt;/code&gt; mentions arrive in chat
&lt;/h2&gt;

&lt;p&gt;This is probably one of those features that feels obvious the moment you use it.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;inside the chat composer now opens a ranked list of files from the chat workspace.&lt;/p&gt;

&lt;p&gt;Keep typing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@auth
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and vincent narrows down the candidates.&lt;/p&gt;

&lt;p&gt;Select a result, and vincent inserts the reference in the format expected by the underlying agent.&lt;/p&gt;

&lt;p&gt;No manually copying paths.&lt;/p&gt;

&lt;p&gt;No jumping between terminal panes just to point the model at a file.&lt;/p&gt;

&lt;p&gt;There is also a CLI equivalent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vincent chat files
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is exactly the kind of small quality-of-life improvement that makes conversational coding workflows much less annoying over time.&lt;/p&gt;




&lt;h2&gt;
  
  
  Work on a branch that already exists
&lt;/h2&gt;

&lt;p&gt;Previously, vincent generally created its own branch and worktree when starting work.&lt;/p&gt;

&lt;p&gt;That isolation is useful, especially for autonomous tasks.&lt;/p&gt;

&lt;p&gt;But sometimes you already have the branch you want.&lt;/p&gt;

&lt;p&gt;Maybe you created it yourself.&lt;/p&gt;

&lt;p&gt;Maybe you checked it out and started experimenting manually.&lt;/p&gt;

&lt;p&gt;Maybe you want an agent to continue exactly where you left off.&lt;/p&gt;

&lt;p&gt;0.10.0 adds support for that.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vincent task add &lt;span class="nt"&gt;--branch&lt;/span&gt; my-feature &lt;span class="nt"&gt;--existing-branch&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vincent chat start &lt;span class="nt"&gt;--branch&lt;/span&gt; my-feature &lt;span class="nt"&gt;--existing-branch&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vincent can now work directly on that branch.&lt;/p&gt;

&lt;p&gt;It also tries to behave conservatively around Git state.&lt;/p&gt;

&lt;p&gt;If the branch is safely behind its upstream, vincent can fast-forward it.&lt;/p&gt;

&lt;p&gt;If it has diverged, vincent blocks rather than trying to modify it behind your back.&lt;/p&gt;

&lt;p&gt;And if the branch is already checked out in your normal working copy, vincent can work there directly instead of creating another worktree.&lt;/p&gt;

&lt;p&gt;That makes vincent much easier to introduce into an existing workflow rather than forcing every interaction to start from vincent itself.&lt;/p&gt;




&lt;h2&gt;
  
  
  Multiline chat input
&lt;/h2&gt;

&lt;p&gt;Yes, this deserves its own section.&lt;/p&gt;

&lt;p&gt;Chat drafts can finally contain newlines.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ctrl+J
Shift+Enter
Alt+Enter
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;while plain &lt;code&gt;Enter&lt;/code&gt; continues to send the message.&lt;/p&gt;

&lt;p&gt;It is not a groundbreaking AI capability.&lt;/p&gt;

&lt;p&gt;It is also one of those things you immediately miss when a terminal chat does not support it.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;code&gt;/clear&lt;/code&gt; is represented correctly
&lt;/h2&gt;

&lt;p&gt;Agent conversations have context boundaries.&lt;/p&gt;

&lt;p&gt;The UI should not pretend otherwise.&lt;/p&gt;

&lt;p&gt;When &lt;code&gt;/clear&lt;/code&gt; is used, vincent now marks that location in the transcript.&lt;/p&gt;

&lt;p&gt;Previously, reading an old conversation could make earlier messages appear as though the agent still had them in context.&lt;/p&gt;

&lt;p&gt;Now the transcript represents what actually happened more accurately.&lt;/p&gt;

&lt;p&gt;That becomes increasingly important when transcripts are used for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;debugging&lt;/li&gt;
&lt;li&gt;auditing&lt;/li&gt;
&lt;li&gt;understanding agent decisions&lt;/li&gt;
&lt;li&gt;reproducing failures&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Send messages from files or stdin
&lt;/h2&gt;

&lt;p&gt;Large prompts and shell-sensitive commands are another source of unnecessary friction.&lt;/p&gt;

&lt;p&gt;Vincent now supports:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vincent chat send &lt;span class="nt"&gt;--message-file&lt;/span&gt; prompt.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and the same capability when starting a chat.&lt;/p&gt;

&lt;p&gt;This also helps with skill invocations such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/review
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$my-skill
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;which some shells may otherwise interpret or modify unexpectedly.&lt;/p&gt;

&lt;p&gt;It is a small addition, but useful when chat becomes part of a scripted workflow instead of something driven exclusively from the keyboard.&lt;/p&gt;




&lt;h2&gt;
  
  
  Safer global workflow updates
&lt;/h2&gt;

&lt;p&gt;Vincent already has workflows that can be created and updated with agent assistance.&lt;/p&gt;

&lt;p&gt;0.10.0 extends that idea to global workflows.&lt;/p&gt;

&lt;p&gt;An update can now produce a &lt;strong&gt;proposal&lt;/strong&gt; rather than silently replacing your configuration.&lt;/p&gt;

&lt;p&gt;The workflow waits at an approval gate before installation.&lt;/p&gt;

&lt;p&gt;You can inspect the proposal and then explicitly apply it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vincent workflow &lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;--global&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vincent workflow apply
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That distinction matters to the direction of the project.&lt;/p&gt;

&lt;p&gt;I want agents to be able to help operate and evolve the system.&lt;/p&gt;

&lt;p&gt;I do &lt;strong&gt;not&lt;/strong&gt; want that to mean quietly giving them ownership of every configuration change.&lt;/p&gt;

&lt;p&gt;Automation and control do not have to be opposites.&lt;/p&gt;




&lt;h2&gt;
  
  
  And a lot of fixes
&lt;/h2&gt;

&lt;p&gt;The release also contains a collection of less glamorous but important fixes.&lt;/p&gt;

&lt;p&gt;Among them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;containerized chats now see the correct agent credentials&lt;/li&gt;
&lt;li&gt;skills typed as the first message of a task chat work correctly&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;@something&lt;/code&gt; no longer accidentally disables skill completion&lt;/li&gt;
&lt;li&gt;cleaner Claude Code and Cursor output handling&lt;/li&gt;
&lt;li&gt;task forms no longer retain stale branch names&lt;/li&gt;
&lt;li&gt;blank workflow values behave consistently&lt;/li&gt;
&lt;li&gt;installing vincent skills for multiple agents works correctly&lt;/li&gt;
&lt;li&gt;example DAG workflows handle unpushed parent branches correctly&lt;/li&gt;
&lt;li&gt;Windows installation documentation is clearer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these make for a dramatic release announcement.&lt;/p&gt;

&lt;p&gt;Together, they matter quite a lot.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I like releases like this
&lt;/h2&gt;

&lt;p&gt;Agentic development is moving extremely quickly.&lt;/p&gt;

&lt;p&gt;It is easy to focus only on capability:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can the agent do one more thing?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But once these tools become part of everyday engineering, a different set of questions becomes equally important.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can I understand what happened?&lt;/li&gt;
&lt;li&gt;Can I trust what branch it is touching?&lt;/li&gt;
&lt;li&gt;Can I see which skill executed?&lt;/li&gt;
&lt;li&gt;Can I recover the transcript later?&lt;/li&gt;
&lt;li&gt;Can I move between manual work and agentic work naturally?&lt;/li&gt;
&lt;li&gt;Does the tool stay out of my way?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is where a lot of the work in vincent is moving now.&lt;/p&gt;

&lt;p&gt;The goal is not simply to give an agent more power.&lt;/p&gt;

&lt;p&gt;It is to build a dependable control plane around that power.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try vincent
&lt;/h2&gt;

&lt;p&gt;If you are experimenting with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Claude Code&lt;/li&gt;
&lt;li&gt;Codex&lt;/li&gt;
&lt;li&gt;coding agents&lt;/li&gt;
&lt;li&gt;multi-step agent workflows&lt;/li&gt;
&lt;li&gt;human-in-the-loop automation&lt;/li&gt;
&lt;li&gt;agent-driven pull request workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I would love for you to try vincent.&lt;/p&gt;

&lt;p&gt;It is fully open source.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;GitHub:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/lezli01/vincent" rel="noopener noreferrer"&gt;https://github.com/lezli01/vincent&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;vincent 0.10.0 changelog:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://lezli01.is-a.dev/vincent/changelog.html#0100--skills-and-files-in-chat-and-work-on-an-existing-branch" rel="noopener noreferrer"&gt;https://lezli01.is-a.dev/vincent/changelog.html#0100--skills-and-files-in-chat-and-work-on-an-existing-branch&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feedback, issues, ideas, and contributions are very welcome.&lt;/p&gt;

&lt;p&gt;And if you are already building agentic development workflows, I am especially interested in hearing:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are the small workflow annoyances that bother you most when working with coding agents every day?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>devtools</category>
      <category>agents</category>
    </item>
    <item>
      <title>AI Can Write Code Faster Than We Can Review It</title>
      <dc:creator>László Szabó</dc:creator>
      <pubDate>Wed, 23 Sep 2026 07:21:40 +0000</pubDate>
      <link>https://dev.to/lezli01/ai-can-write-code-faster-than-we-can-review-it-15jb</link>
      <guid>https://dev.to/lezli01/ai-can-write-code-faster-than-we-can-review-it-15jb</guid>
      <description>&lt;p&gt;Coding agents are getting very good at producing code.&lt;/p&gt;

&lt;p&gt;Maybe &lt;em&gt;too&lt;/em&gt; good.&lt;/p&gt;

&lt;p&gt;One engineer working with agents can now generate multiple meaningful pull requests in the time it previously took to implement a single feature.&lt;/p&gt;

&lt;p&gt;That sounds like a massive productivity win.&lt;/p&gt;

&lt;p&gt;Until you look at the review queue.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;More agent throughput
        ↓
More code
        ↓
More pull requests
        ↓
Same number of experienced reviewers
        ↓
Review becomes the bottleneck
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We didn't eliminate the bottleneck.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We moved it.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why not let another agent review it?
&lt;/h2&gt;

&lt;p&gt;That's the obvious next step.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent A
   ↓
writes code
   ↓
Agent B
   ↓
reviews code
   ↓
CI passes
   ↓
merge
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And I absolutely think agent review will become an important part of modern engineering pipelines.&lt;/p&gt;

&lt;p&gt;But there is an uncomfortable question hiding behind this model:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Who takes responsibility for code that no human has ever reviewed?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This matters a lot more when you're building systems where failures have consequences.&lt;/p&gt;

&lt;p&gt;I've worked on cybersecurity products deployed in environments where security and reliability are not abstract quality metrics.&lt;/p&gt;

&lt;p&gt;They matter operationally.&lt;/p&gt;

&lt;p&gt;In that kind of environment, telling engineers:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The agents reviewed each other's work."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;is not necessarily enough.&lt;/p&gt;

&lt;p&gt;Agents can independently catch bugs.&lt;/p&gt;

&lt;p&gt;But they can also independently misunderstand the same requirement.&lt;/p&gt;




&lt;h2&gt;
  
  
  Code generation isn't the same as delivery throughput
&lt;/h2&gt;

&lt;p&gt;There's another problem.&lt;/p&gt;

&lt;p&gt;Imagine your agents create ten PRs today.&lt;/p&gt;

&lt;p&gt;Your team can realistically review three.&lt;/p&gt;

&lt;p&gt;Tomorrow the agents create ten more.&lt;/p&gt;

&lt;p&gt;You haven't increased delivery throughput.&lt;/p&gt;

&lt;p&gt;You've created &lt;strong&gt;17 pieces of unfinished inventory&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is basically a queueing problem.&lt;/p&gt;

&lt;p&gt;And once you start looking at agentic development through that lens, the optimization target changes.&lt;/p&gt;

&lt;p&gt;The question stops being:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How do we make agents generate even more code?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How do we safely move agent-generated changes through the engineering system?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  I think the review pipeline needs to change
&lt;/h2&gt;

&lt;p&gt;The answer probably isn't "humans review everything exactly as before."&lt;/p&gt;

&lt;p&gt;That doesn't scale.&lt;/p&gt;

&lt;p&gt;But I also don't think the answer is "agents approve agents and humans disappear."&lt;/p&gt;

&lt;p&gt;A more realistic agent-native pipeline might look something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent implementation
        ↓
Deterministic verification
        ↓
Independent agent review
        ↓
Risk classification
        ↓
┌───────────────────────────────┐
│ Low risk → automated pipeline │
│ Medium   → targeted review    │
│ High     → deep human review  │
└───────────────────────────────┘
        ↓
Merge queue
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important part is &lt;strong&gt;risk&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Changing a typo in documentation isn't the same as changing authentication logic.&lt;/p&gt;

&lt;p&gt;Updating a test helper isn't the same as touching authorization, cryptography, persistence, financial calculations, or safety-critical behavior.&lt;/p&gt;

&lt;p&gt;Yet most PR workflows still treat them remarkably similarly.&lt;/p&gt;




&lt;h2&gt;
  
  
  Human attention becomes the scarce resource
&lt;/h2&gt;

&lt;p&gt;Agents make implementation cheaper.&lt;/p&gt;

&lt;p&gt;That means something else becomes relatively more expensive:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;experienced human judgment.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We should probably stop spending that judgment on things machines can verify reliably.&lt;/p&gt;

&lt;p&gt;Humans shouldn't be hunting for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;formatting mistakes&lt;/li&gt;
&lt;li&gt;lint violations&lt;/li&gt;
&lt;li&gt;missing imports&lt;/li&gt;
&lt;li&gt;obvious null errors&lt;/li&gt;
&lt;li&gt;trivial test failures&lt;/li&gt;
&lt;li&gt;mechanical style inconsistencies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Machines are better suited for those.&lt;/p&gt;

&lt;p&gt;Human reviewers should spend their limited attention asking questions such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does this architecture still make sense?&lt;/li&gt;
&lt;li&gt;Is the requirement interpreted correctly?&lt;/li&gt;
&lt;li&gt;What happens when a dependency fails?&lt;/li&gt;
&lt;li&gt;Did we introduce a security boundary violation?&lt;/li&gt;
&lt;li&gt;Does this change create an operational risk?&lt;/li&gt;
&lt;li&gt;Are there domain assumptions hidden in this implementation?&lt;/li&gt;
&lt;li&gt;Is this actually the right solution?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's where engineering judgment matters.&lt;/p&gt;




&lt;h2&gt;
  
  
  And sometimes agents should simply stop coding
&lt;/h2&gt;

&lt;p&gt;This may be one of the stranger consequences of agentic development.&lt;/p&gt;

&lt;p&gt;If your review queue is already overloaded...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;generating more code may have negative value.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That means agent orchestration systems may eventually need WIP limits just like mature manufacturing and Kanban systems.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if review_queue &amp;gt; threshold:
    stop_starting_new_work()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The most productive coding agent might occasionally be the one that decides:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Don't write another PR yet.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  This is becoming a real engineering problem
&lt;/h2&gt;

&lt;p&gt;I've been discussing this with people from other companies dealing with variations of the same problem.&lt;/p&gt;

&lt;p&gt;The interesting part is that the conversation is already moving beyond:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"How can we use AI to write code?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;toward:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"How do we redesign the SDLC when producing code is no longer the expensive part?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I've also been experimenting with some of these ideas while building &lt;strong&gt;Vincent&lt;/strong&gt;, particularly around controlled agent workflows, deterministic steps, explicit states, human gates, and workflows that know when they should stop rather than blindly continuing.&lt;/p&gt;

&lt;p&gt;I wrote a longer article exploring the problem, possible review architectures, and the parts I still don't think we have good answers for.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://blog.lezli01.is-a.dev/blog/agent-review-bottleneck/" rel="noopener noreferrer"&gt;When Agents Write Faster Than Humans Can Review&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  I'm curious how other teams are handling this
&lt;/h2&gt;

&lt;p&gt;If you're already using coding agents heavily:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Has code generation started outpacing your team's review capacity?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And if it has, what did you change?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More automated verification?&lt;/li&gt;
&lt;li&gt;Agent reviewers?&lt;/li&gt;
&lt;li&gt;Smaller PRs?&lt;/li&gt;
&lt;li&gt;Risk-based reviews?&lt;/li&gt;
&lt;li&gt;Merge queues?&lt;/li&gt;
&lt;li&gt;WIP limits?&lt;/li&gt;
&lt;li&gt;Something completely different?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'd especially love to hear from teams using agents in security-sensitive or high-reliability systems.&lt;/p&gt;

&lt;p&gt;Because I suspect the next major problem in agentic software development isn't going to be writing code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It's going to be deciding what code we can trust.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>productivity</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Vincent 0.9.0: Coding-agent automation that knows when to stop</title>
      <dc:creator>László Szabó</dc:creator>
      <pubDate>Fri, 18 Sep 2026 19:39:31 +0000</pubDate>
      <link>https://dev.to/lezli01/vincent-090-coding-agent-automation-that-knows-when-to-stop-40n2</link>
      <guid>https://dev.to/lezli01/vincent-090-coding-agent-automation-that-knows-when-to-stop-40n2</guid>
      <description>&lt;p&gt;Vincent 0.9.0 is out.&lt;/p&gt;

&lt;p&gt;And while there are plenty of new features in this release, the part I care about most is something less flashy:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vincent is getting better at knowing what it should &lt;em&gt;not&lt;/em&gt; do.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fourteen days after 0.8.0, the release contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;428 commits&lt;/li&gt;
&lt;li&gt;23 additions&lt;/li&gt;
&lt;li&gt;6 changes&lt;/li&gt;
&lt;li&gt;11 fixes&lt;/li&gt;
&lt;li&gt;57 pull requests represented in the changelog&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For anyone unfamiliar with the project, &lt;a href="https://github.com/lezli01/vincent" rel="noopener noreferrer"&gt;vincent&lt;/a&gt; is a local, vendor-independent control plane for coding agents.&lt;/p&gt;

&lt;p&gt;It can run tools such as Claude Code, Codex and Cursor through explicit workflows, isolate tasks into branches and worktrees, coordinate parallel work, enforce gates, run verification, and keep the orchestration state on your machine.&lt;/p&gt;

&lt;p&gt;0.9.0 takes another major step toward making that model useful for longer-running automation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Work can now start itself
&lt;/h2&gt;

&lt;p&gt;Until 0.9.0, something had to explicitly invoke vincent.&lt;/p&gt;

&lt;p&gt;You could create a task from the TUI, CLI or API, but there was always a direct action that started the process.&lt;/p&gt;

&lt;p&gt;0.9.0 introduces &lt;strong&gt;event triggers&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Vincent can now react to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub issues&lt;/li&gt;
&lt;li&gt;GitHub pull requests&lt;/li&gt;
&lt;li&gt;command output&lt;/li&gt;
&lt;li&gt;signed HTTP events&lt;/li&gt;
&lt;li&gt;cron schedules&lt;/li&gt;
&lt;li&gt;recurring intervals&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That means workflows such as these are now possible:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;issue receives "agent-please" label
        ↓
Vincent creates task
        ↓
workflow starts
        ↓
agent implements change
        ↓
checks run
        ↓
human reviews result
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;02:00 every night
        ↓
dependency audit
        ↓
agent investigates outdated packages
        ↓
proposed changes wait for review
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But adding event-driven execution introduces a much more important question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who is allowed to turn automation on?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Agents can propose automation. They cannot arm it.
&lt;/h2&gt;

&lt;p&gt;Triggers are intentionally conservative.&lt;/p&gt;

&lt;p&gt;A trigger does nothing until both the trigger itself and trigger support globally are enabled.&lt;/p&gt;

&lt;p&gt;When a trigger is armed for the first time, vincent records the events that already exist instead of executing a backlog of old work.&lt;/p&gt;

&lt;p&gt;Triggered tasks can also default to a paused state.&lt;/p&gt;

&lt;p&gt;And there is another rule I consider particularly important:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An agent can create or modify a trigger proposal, but vincent will refuse to apply it if doing so would arm the trigger.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There is no override flag.&lt;/p&gt;

&lt;p&gt;The agent can write the automation.&lt;/p&gt;

&lt;p&gt;A human decides whether that automation gets authority to run.&lt;/p&gt;

&lt;p&gt;That distinction is going to matter more as coding agents become increasingly capable.&lt;/p&gt;

&lt;h2&gt;
  
  
  From issue to pull request to merge
&lt;/h2&gt;

&lt;p&gt;Vincent 0.8.0 could open a pull request for a task.&lt;/p&gt;

&lt;p&gt;0.9.0 goes further.&lt;/p&gt;

&lt;p&gt;From the task itself you can now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;inspect PR checks&lt;/li&gt;
&lt;li&gt;comment&lt;/li&gt;
&lt;li&gt;re-run checks&lt;/li&gt;
&lt;li&gt;close a PR&lt;/li&gt;
&lt;li&gt;reopen it&lt;/li&gt;
&lt;li&gt;merge it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But again, the interesting part is the boundary.&lt;/p&gt;

&lt;p&gt;The merge action is &lt;strong&gt;not exposed as an MCP tool&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Agents do not get the merge button.&lt;/p&gt;

&lt;p&gt;And when a human requests a merge, vincent checks that the exact state being reviewed is still valid.&lt;/p&gt;

&lt;p&gt;It refuses the operation if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the branch is behind&lt;/li&gt;
&lt;li&gt;a check is still running&lt;/li&gt;
&lt;li&gt;the PR head has moved&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is not to eliminate human involvement.&lt;/p&gt;

&lt;p&gt;The goal is to make human involvement happen at the places where it actually matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agents now live inside the task container
&lt;/h2&gt;

&lt;p&gt;Containerized tasks are also more complete in 0.9.&lt;/p&gt;

&lt;p&gt;Previously, command steps and checks could execute inside the task container while the actual agent CLI still ran on the host.&lt;/p&gt;

&lt;p&gt;That meant a supposedly containerized workflow was partially split across environments.&lt;/p&gt;

&lt;p&gt;Now, when a task defines a container image, the agent itself runs inside that container as well.&lt;/p&gt;

&lt;p&gt;That gives the workflow a much cleaner execution boundary:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;task
 └── container
      ├── agent
      ├── commands
      ├── checks
      └── task environment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The transcripts, cost tracking and controls remain available just like they are for host execution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Talk to a task after it stops
&lt;/h2&gt;

&lt;p&gt;A workflow stopping does not necessarily mean the work is finished.&lt;/p&gt;

&lt;p&gt;Sometimes a task is blocked.&lt;/p&gt;

&lt;p&gt;Sometimes it is sitting at a gate.&lt;/p&gt;

&lt;p&gt;Sometimes it failed in a way that needs investigation.&lt;/p&gt;

&lt;p&gt;0.9 adds the ability to open a conversation with an agent directly on that task.&lt;/p&gt;

&lt;p&gt;The agent starts with the task context, its branch and the reason execution stopped.&lt;/p&gt;

&lt;p&gt;So instead of reconstructing the problem somewhere else, you can investigate it where the work actually happened.&lt;/p&gt;

&lt;h2&gt;
  
  
  Parallel workflows got harder to break
&lt;/h2&gt;

&lt;p&gt;0.8 introduced fan-out workflows: one task could split an issue into multiple parallel lanes.&lt;/p&gt;

&lt;p&gt;0.9 contains the first substantial reinforcement of that system.&lt;/p&gt;

&lt;p&gt;Previously, blocked lanes could make the fan-out painful to recover.&lt;/p&gt;

&lt;p&gt;Now retrying the parent task can re-admit all blocked lanes below it.&lt;/p&gt;

&lt;p&gt;Vincent also tracks resource usage across the whole task tree more accurately, including a new tree-wide spending ceiling:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;parent task
├── lane A
├── lane B
├── lane C
├── retries
└── follow-ups

        ↓

one shared cost limit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That matters once a single user action can produce a substantial amount of autonomous work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Better observability into what the agent actually received
&lt;/h2&gt;

&lt;p&gt;Agent orchestration becomes difficult to debug when configuration comes from several levels.&lt;/p&gt;

&lt;p&gt;What model ran?&lt;/p&gt;

&lt;p&gt;What effort level?&lt;/p&gt;

&lt;p&gt;What exact prompt was rendered?&lt;/p&gt;

&lt;p&gt;Was the value set globally, in the workflow or on the step?&lt;/p&gt;

&lt;p&gt;0.9 adds a Step Details view that records the actual values when execution happens.&lt;/p&gt;

&lt;p&gt;That includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;rendered prompt or script&lt;/li&gt;
&lt;li&gt;agent&lt;/li&gt;
&lt;li&gt;model&lt;/li&gt;
&lt;li&gt;effort level&lt;/li&gt;
&lt;li&gt;source of each configuration value&lt;/li&gt;
&lt;li&gt;execution outcome&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Older task attempts are not retroactively guessed.&lt;/p&gt;

&lt;p&gt;If vincent did not record something at the time, it says so.&lt;/p&gt;

&lt;p&gt;That sounds small, but I think this kind of honesty in tooling matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  A lot of 0.9 is about refusing invalid states
&lt;/h2&gt;

&lt;p&gt;There is a pattern throughout this release.&lt;/p&gt;

&lt;p&gt;Vincent now refuses more operations that previously could have been ambiguous or silently incorrect.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;unsafe PR merges are refused&lt;/li&gt;
&lt;li&gt;trigger proposals cannot secretly arm automation&lt;/li&gt;
&lt;li&gt;invalid retry configuration on unsupported workflow steps is rejected&lt;/li&gt;
&lt;li&gt;conflicting TUI keybindings are rejected before being written&lt;/li&gt;
&lt;li&gt;branches with commits beyond their base are protected from permanent deletion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That leads to one of the principles behind this release:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Much of a stable release is a promise about what the tool will refuse to do.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Features make automation powerful.&lt;/p&gt;

&lt;p&gt;Refusals make it trustworthy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Better recovery and operational tooling
&lt;/h2&gt;

&lt;p&gt;There are plenty of smaller changes around the edges too.&lt;/p&gt;

&lt;p&gt;Scheduled backups can now be maintained by the daemon.&lt;/p&gt;

&lt;p&gt;Individual deleted tasks can be restored from an archive.&lt;/p&gt;

&lt;p&gt;Agent usage limits are tracked more carefully so multiple tasks do not repeatedly launch processes into a known quota wall.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;vincent doctor&lt;/code&gt; performs more useful diagnostics.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;vincent agents&lt;/code&gt; shows installed agent versions, authentication state and quota information.&lt;/p&gt;

&lt;p&gt;And vincent can now detect when its installed agent skills are older than the running build.&lt;/p&gt;

&lt;p&gt;None of these features make a particularly dramatic screenshot.&lt;/p&gt;

&lt;p&gt;They do, however, make a system considerably nicer to operate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vincent is building vincent
&lt;/h2&gt;

&lt;p&gt;One metric from this release probably says more about the project than anything else.&lt;/p&gt;

&lt;p&gt;Between the 0.8.0 and 0.9.0 tags, &lt;strong&gt;88 pull requests were merged&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;76 originated from &lt;code&gt;vincent/&lt;/code&gt; task branches.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The 0.9 release preparation itself was also executed as a vincent workflow: 21 steps that eventually produced the PR used to prepare the release.&lt;/p&gt;

&lt;p&gt;Using your own orchestration system to build itself is an extremely effective way to discover where the abstractions break.&lt;/p&gt;

&lt;p&gt;And they do break.&lt;/p&gt;

&lt;p&gt;0.9 contains plenty of fixes precisely because vincent is now exercising those workflows every day.&lt;/p&gt;

&lt;h2&gt;
  
  
  The road to 1.0
&lt;/h2&gt;

&lt;p&gt;Vincent is still 0.x.&lt;/p&gt;

&lt;p&gt;Some interfaces still change.&lt;/p&gt;

&lt;p&gt;Some workflow configurations that previously failed silently are now errors.&lt;/p&gt;

&lt;p&gt;Some TUI keys moved to make behavior consistent.&lt;/p&gt;

&lt;p&gt;That instability is intentional while the foundations are still being hardened.&lt;/p&gt;

&lt;p&gt;For me, the important change in 0.9 is that vincent is starting to feel less like a tool that happens to run coding agents and more like an actual &lt;strong&gt;control plane for agent-driven software work&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Something can observe an event.&lt;/p&gt;

&lt;p&gt;Decide that work may need to happen.&lt;/p&gt;

&lt;p&gt;Create a controlled task.&lt;/p&gt;

&lt;p&gt;Run agents in isolated environments.&lt;/p&gt;

&lt;p&gt;Fan the work out.&lt;/p&gt;

&lt;p&gt;Verify the results.&lt;/p&gt;

&lt;p&gt;Produce a pull request.&lt;/p&gt;

&lt;p&gt;And then stop at the boundary where a human decision still matters.&lt;/p&gt;

&lt;p&gt;That is the direction I want to keep pushing toward 1.0.&lt;/p&gt;




&lt;p&gt;📖 &lt;strong&gt;Full 0.9.0 release write-up&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.lezli01.is-a.dev/blog/vincent-0-9-release/" rel="noopener noreferrer"&gt;https://blog.lezli01.is-a.dev/blog/vincent-0-9-release/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💻 &lt;strong&gt;GitHub&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/lezli01/vincent" rel="noopener noreferrer"&gt;https://github.com/lezli01/vincent&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feedback, issues and contributions are very welcome.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>automation</category>
      <category>programming</category>
    </item>
    <item>
      <title>Failure Should Be a State, Not a Dead End</title>
      <dc:creator>László Szabó</dc:creator>
      <pubDate>Thu, 17 Sep 2026 09:09:16 +0000</pubDate>
      <link>https://dev.to/lezli01/failure-should-be-a-state-not-a-dead-end-54p3</link>
      <guid>https://dev.to/lezli01/failure-should-be-a-state-not-a-dead-end-54p3</guid>
      <description>&lt;p&gt;AI agents fail.&lt;/p&gt;

&lt;p&gt;That part is inevitable.&lt;/p&gt;

&lt;p&gt;What matters is what your workflow does next.&lt;/p&gt;

&lt;p&gt;In many agentic systems, failure effectively means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;stop the execution&lt;/li&gt;
&lt;li&gt;lose useful context&lt;/li&gt;
&lt;li&gt;restart the task&lt;/li&gt;
&lt;li&gt;rediscover what went wrong&lt;/li&gt;
&lt;li&gt;repeat work that already happened&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That feels less like recovery and more like starting over.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failure should be part of the workflow
&lt;/h2&gt;

&lt;p&gt;In vincent, I wanted failure to be something the workflow can represent explicitly.&lt;/p&gt;

&lt;p&gt;A failed attempt still has valuable information:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the agent transcript&lt;/li&gt;
&lt;li&gt;produced output&lt;/li&gt;
&lt;li&gt;timing information&lt;/li&gt;
&lt;li&gt;the failure reason&lt;/li&gt;
&lt;li&gt;the branch and worktree&lt;/li&gt;
&lt;li&gt;everything that happened before the failure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That state should not disappear just because one step failed.&lt;/p&gt;

&lt;p&gt;Instead, the workflow can decide what happens next.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recovery can take different forms
&lt;/h2&gt;

&lt;p&gt;Depending on the situation, you might want to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔄 Retry the same task&lt;/li&gt;
&lt;li&gt;✏️ Change something and retry&lt;/li&gt;
&lt;li&gt;🛠️ Run a repair agent in the existing worktree&lt;/li&gt;
&lt;li&gt;⏭️ Skip the failed task&lt;/li&gt;
&lt;li&gt;🛑 Cancel the workflow&lt;/li&gt;
&lt;li&gt;👤 Ask a human to decide what happens next&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The important part is that none of these require pretending the previous attempt never happened.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Restarting an agent is not the same as recovering a workload.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;As agent workflows become longer and more complex, failures become normal operational events.&lt;/p&gt;

&lt;p&gt;A workflow with ten, twenty, or fifty dependent tasks cannot realistically treat every failure as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Something failed.
Start again.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The orchestration layer needs to understand failure as a first-class state.&lt;/p&gt;

&lt;p&gt;That makes workflows easier to debug, easier to recover, and much safer to run when agents are touching real codebases.&lt;/p&gt;

&lt;h2&gt;
  
  
  This is especially important for autonomous agents
&lt;/h2&gt;

&lt;p&gt;The more autonomy we give agents, the more important recovery becomes.&lt;/p&gt;

&lt;p&gt;Retries alone are not enough.&lt;/p&gt;

&lt;p&gt;Sometimes the right response is another agent.&lt;/p&gt;

&lt;p&gt;Sometimes it is a human.&lt;/p&gt;

&lt;p&gt;Sometimes the task should simply remain blocked until somebody understands what happened.&lt;/p&gt;

&lt;p&gt;The orchestration system should preserve enough context to make that decision intelligently.&lt;/p&gt;




&lt;p&gt;I wrote more about how I approach this in &lt;strong&gt;vincent&lt;/strong&gt;, my open-source AI SDLC workflow tool:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://lezli01.is-a.dev/vincent/docs/why/failure-should-be-a-state-not-a-dead-end.html" rel="noopener noreferrer"&gt;https://lezli01.is-a.dev/vincent/docs/why/failure-should-be-a-state-not-a-dead-end.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m curious how others are handling this in agent orchestration systems.&lt;/p&gt;

&lt;p&gt;Do you treat agent failure mostly as a retry problem, or as workflow state?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>opensource</category>
      <category>devtools</category>
    </item>
    <item>
      <title>The Terminal Should Show the Work, Not Own It</title>
      <dc:creator>László Szabó</dc:creator>
      <pubDate>Tue, 15 Sep 2026 06:51:25 +0000</pubDate>
      <link>https://dev.to/lezli01/the-terminal-should-show-the-work-not-own-it-ihk</link>
      <guid>https://dev.to/lezli01/the-terminal-should-show-the-work-not-own-it-ihk</guid>
      <description>&lt;p&gt;As AI coding agents become more capable, I think we need to rethink one assumption that still shapes a lot of developer tooling:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The terminal session that starts the work should not necessarily own the work.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For short interactions, the traditional model is perfectly fine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;open terminal
→ start agent
→ ask for something
→ get result
→ exit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But agentic development is moving beyond short conversations.&lt;/p&gt;

&lt;p&gt;Tasks can now involve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;retries&lt;/li&gt;
&lt;li&gt;approval gates&lt;/li&gt;
&lt;li&gt;parallel branches&lt;/li&gt;
&lt;li&gt;long-running implementation work&lt;/li&gt;
&lt;li&gt;rate limits&lt;/li&gt;
&lt;li&gt;scheduled execution&lt;/li&gt;
&lt;li&gt;external validation&lt;/li&gt;
&lt;li&gt;Git worktrees&lt;/li&gt;
&lt;li&gt;multiple agents&lt;/li&gt;
&lt;li&gt;human intervention halfway through a workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At that point, the task starts looking less like a chat session and more like a &lt;strong&gt;workload&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The terminal is ephemeral
&lt;/h2&gt;

&lt;p&gt;Terminal sessions are temporary by nature.&lt;/p&gt;

&lt;p&gt;You close the tab.&lt;br&gt;
Your SSH connection drops.&lt;br&gt;
Your laptop sleeps.&lt;br&gt;
You restart the application.&lt;br&gt;
You simply want your terminal back for something else.&lt;/p&gt;

&lt;p&gt;None of those things should necessarily mean that the underlying work has to disappear with it.&lt;/p&gt;

&lt;p&gt;That is the distinction I wanted to make in vincent.&lt;/p&gt;
&lt;h2&gt;
  
  
  The execution should live somewhere durable
&lt;/h2&gt;

&lt;p&gt;In vincent, workflow execution is owned by a background daemon.&lt;/p&gt;

&lt;p&gt;That layer is responsible for things such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;workflow state&lt;/li&gt;
&lt;li&gt;agent processes&lt;/li&gt;
&lt;li&gt;scheduling&lt;/li&gt;
&lt;li&gt;persistence&lt;/li&gt;
&lt;li&gt;retries&lt;/li&gt;
&lt;li&gt;approvals&lt;/li&gt;
&lt;li&gt;Git worktrees&lt;/li&gt;
&lt;li&gt;task lifecycle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The TUI, CLI and API are clients of that state.&lt;/p&gt;

&lt;p&gt;They let you inspect and interact with the work, but they do not define its lifetime.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        CLI
         │
         │
TUI ── Control Plane ── API
         │
         │
    Agent Workloads
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Close the TUI and the workload can continue.&lt;/p&gt;

&lt;p&gt;Reconnect later and you can inspect the same task again.&lt;/p&gt;

&lt;p&gt;Use another client and you are still looking at the same underlying execution state.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I think this matters
&lt;/h2&gt;

&lt;p&gt;As coding agents become more autonomous, the distinction between &lt;strong&gt;interface&lt;/strong&gt; and &lt;strong&gt;execution lifecycle&lt;/strong&gt; becomes more important.&lt;/p&gt;

&lt;p&gt;We already accept this separation in many other areas of software engineering.&lt;/p&gt;

&lt;p&gt;A Kubernetes workload does not disappear because you close &lt;code&gt;kubectl&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A CI pipeline does not stop because you close the browser tab.&lt;/p&gt;

&lt;p&gt;A background job does not belong to the shell command that originally enqueued it.&lt;/p&gt;

&lt;p&gt;So why should a long-running AI engineering workflow belong to one terminal process?&lt;/p&gt;

&lt;h2&gt;
  
  
  Agentic coding is becoming infrastructure
&lt;/h2&gt;

&lt;p&gt;The more responsibility we give coding agents, the more orchestration concerns start appearing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;state
retries
concurrency
approval
scheduling
recovery
observability
persistence
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Those are not really terminal concerns.&lt;/p&gt;

&lt;p&gt;They are control-plane concerns.&lt;/p&gt;

&lt;p&gt;And I think developer tools built around agents will increasingly need to treat them that way.&lt;/p&gt;

&lt;h2&gt;
  
  
  The terminal still matters
&lt;/h2&gt;

&lt;p&gt;None of this means the terminal is going away.&lt;/p&gt;

&lt;p&gt;Quite the opposite.&lt;/p&gt;

&lt;p&gt;The terminal is still one of the best interfaces for developers.&lt;/p&gt;

&lt;p&gt;But there is an important difference between:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The terminal controls the workload."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The terminal owns the workload."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I strongly prefer the first.&lt;/p&gt;

&lt;p&gt;The terminal should be a window into the system.&lt;/p&gt;

&lt;p&gt;Not the system itself.&lt;/p&gt;




&lt;p&gt;I wrote more about the reasoning and the architecture behind this approach in the vincent documentation:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://lezli01.is-a.dev/vincent/docs/why/the-terminal-should-not-own-the-work.html" rel="noopener noreferrer"&gt;https://lezli01.is-a.dev/vincent/docs/why/the-terminal-should-not-own-the-work.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vincent is an open-source project exploring workflow-driven, human-controlled AI software development.&lt;/p&gt;

&lt;p&gt;I’m curious how other agent frameworks and developer tools approach this problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Should long-running coding agents belong to the terminal session that launched them, or to a durable orchestration layer behind it?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>automation</category>
    </item>
    <item>
      <title>Did I Build a Worse LangGraph?</title>
      <dc:creator>László Szabó</dc:creator>
      <pubDate>Thu, 10 Sep 2026 10:22:02 +0000</pubDate>
      <link>https://dev.to/lezli01/did-i-build-a-worse-langgraph-4b8f</link>
      <guid>https://dev.to/lezli01/did-i-build-a-worse-langgraph-4b8f</guid>
      <description>&lt;p&gt;When you build an orchestration tool for AI agents, there is an uncomfortable question you eventually have to ask:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does this need to exist when LangGraph already exists?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I recently tried to answer that question for &lt;a href="https://github.com/lezli01/vincent" rel="noopener noreferrer"&gt;vincent&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And the answer was not that LangGraph and vincent are completely different.&lt;/p&gt;

&lt;p&gt;They aren't.&lt;/p&gt;

&lt;p&gt;There is substantial overlap.&lt;/p&gt;

&lt;p&gt;Both can coordinate agentic workloads. Both can express structured execution. Both can deal with parallel work, retries, long-running processes, and human checkpoints.&lt;/p&gt;

&lt;p&gt;The real difference is the level of abstraction.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;LangGraph orchestrates what an AI agent does.&lt;br&gt;
vincent orchestrates what AI coding agents do to a software project.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That distinction has turned out to be much more important than I originally expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Repository Is Part of the Workflow
&lt;/h2&gt;

&lt;p&gt;In a typical agent orchestration system, the central abstraction is application state.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;state
  ↓
node
  ↓
new state
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For software-development automation, there is another extremely important piece of state:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;repository
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A coding agent does not merely return structured output.&lt;/p&gt;

&lt;p&gt;It modifies files.&lt;/p&gt;

&lt;p&gt;Those files live inside Git repositories.&lt;/p&gt;

&lt;p&gt;Changes may need to happen in isolated worktrees.&lt;/p&gt;

&lt;p&gt;Parallel agents may produce separate branches.&lt;/p&gt;

&lt;p&gt;Results may need to pass deterministic verification.&lt;/p&gt;

&lt;p&gt;A human may need to approve them.&lt;/p&gt;

&lt;p&gt;Eventually, those branches may need to merge.&lt;/p&gt;

&lt;p&gt;And that merge may fail.&lt;/p&gt;

&lt;p&gt;In vincent, those are not just implementation details around the agent.&lt;/p&gt;

&lt;p&gt;They are part of the orchestration model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Parallelism Means Something Different
&lt;/h2&gt;

&lt;p&gt;Consider a fan-out workflow.&lt;/p&gt;

&lt;p&gt;In a general-purpose agent graph, several nodes may execute independently and later combine their resulting state.&lt;/p&gt;

&lt;p&gt;For coding agents, parallelism can mean something much more concrete:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;main
├── agent-a branch
├── agent-b branch
└── agent-c branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each agent works in an isolated repository state.&lt;/p&gt;

&lt;p&gt;The join is no longer only about combining application data.&lt;/p&gt;

&lt;p&gt;It can literally mean:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git merge
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And therefore it can produce:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;merge conflict
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That changes what the runtime needs to understand.&lt;/p&gt;

&lt;h2&gt;
  
  
  This Is About Defaults, Not Possibility
&lt;/h2&gt;

&lt;p&gt;An important point in this comparison:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is not a capability argument.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can absolutely build repository-aware coding workflows using LangGraph.&lt;/p&gt;

&lt;p&gt;You can put repository paths, commit hashes, branch information, diff metadata, and verification results into graph state.&lt;/p&gt;

&lt;p&gt;You can implement worktree management.&lt;/p&gt;

&lt;p&gt;You can implement merge semantics.&lt;/p&gt;

&lt;p&gt;You can build approval gates.&lt;/p&gt;

&lt;p&gt;You can integrate coding agents.&lt;/p&gt;

&lt;p&gt;The difference is not what is possible.&lt;/p&gt;

&lt;p&gt;The difference is what the runtime treats as a &lt;strong&gt;first-class concept&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;LangGraph deliberately provides flexible, low-level orchestration primitives.&lt;/p&gt;

&lt;p&gt;vincent deliberately provides opinionated software-development primitives.&lt;/p&gt;

&lt;h2&gt;
  
  
  Being Opinionated Has a Cost
&lt;/h2&gt;

&lt;p&gt;That specialization is not universally better.&lt;/p&gt;

&lt;p&gt;Quite the opposite.&lt;/p&gt;

&lt;p&gt;LangGraph can be used to build an enormous variety of agent systems.&lt;/p&gt;

&lt;p&gt;vincent intentionally has a much narrower domain.&lt;/p&gt;

&lt;p&gt;Its workflows revolve around concepts such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;repositories&lt;/li&gt;
&lt;li&gt;coding agents&lt;/li&gt;
&lt;li&gt;commands&lt;/li&gt;
&lt;li&gt;checks&lt;/li&gt;
&lt;li&gt;worktrees&lt;/li&gt;
&lt;li&gt;branches&lt;/li&gt;
&lt;li&gt;approvals&lt;/li&gt;
&lt;li&gt;retries&lt;/li&gt;
&lt;li&gt;merging&lt;/li&gt;
&lt;li&gt;software delivery&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your problem has nothing to do with software-development automation, vincent is probably the wrong abstraction.&lt;/p&gt;

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

&lt;p&gt;Generality gives you flexibility.&lt;/p&gt;

&lt;p&gt;Opinionated semantics give you stronger defaults.&lt;/p&gt;

&lt;h2&gt;
  
  
  They Can Also Work Together
&lt;/h2&gt;

&lt;p&gt;The comparison becomes even more interesting when you stop thinking about the projects as mutually exclusive.&lt;/p&gt;

&lt;p&gt;A sophisticated architecture could look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vincent
   ↓
coding workflow
   ↓
custom agent
   ↓
LangGraph
   ↓
reasoning / retrieval / tools / memory
   ↓
repository changes
   ↓
vincent verification / approval / merge
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;LangGraph could power the intelligence inside an agent.&lt;/p&gt;

&lt;p&gt;vincent could govern how that agent is allowed to operate against a real software project.&lt;/p&gt;

&lt;p&gt;Those are different responsibilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Full Comparison
&lt;/h2&gt;

&lt;p&gt;I wrote a more detailed breakdown covering the architectural overlap, repository semantics, fan-out/fan-in behavior, human control, durability, and the tradeoffs of an opinionated coding-agent runtime.&lt;/p&gt;

&lt;p&gt;You can read it here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://blog.lezli01.is-a.dev/blog/langgraph-vs-vincent/" rel="noopener noreferrer"&gt;LangGraph vs vincent: generic graph primitives against an opinionated coding-agent runtime&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'd be very interested to hear how others building coding agents, AI development platforms, or LangGraph-based systems think about this separation.&lt;/p&gt;

&lt;p&gt;Is repository-aware orchestration something that should live inside the agent framework itself?&lt;/p&gt;

&lt;p&gt;Or does it make sense as a separate layer?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>softwaredevelopment</category>
      <category>opensource</category>
      <category>agentaichallenge</category>
    </item>
    <item>
      <title>Automation Without Giving Up Control — or Your Profession</title>
      <dc:creator>László Szabó</dc:creator>
      <pubDate>Wed, 09 Sep 2026 17:53:39 +0000</pubDate>
      <link>https://dev.to/lezli01/automation-without-giving-up-control-or-your-profession-21fg</link>
      <guid>https://dev.to/lezli01/automation-without-giving-up-control-or-your-profession-21fg</guid>
      <description>&lt;p&gt;There is a recurring fear around AI and agentic automation:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If agents can eventually do most of the work, what is left for us?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I think this question starts from the wrong assumption.&lt;/p&gt;

&lt;p&gt;It treats professional work as if its value comes primarily from &lt;strong&gt;performing individual steps&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Write this code.&lt;br&gt;
Run this command.&lt;br&gt;
Check this test.&lt;br&gt;
Create this pull request.&lt;br&gt;
Deploy this service.&lt;/p&gt;

&lt;p&gt;But those steps have never been the whole profession.&lt;/p&gt;

&lt;p&gt;The real value comes from knowing &lt;strong&gt;why those steps should happen, what good looks like, which trade-offs are acceptable, and when the result is safe to ship&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Agentic automation doesn't necessarily remove that responsibility.&lt;/p&gt;

&lt;p&gt;It can actually make it more visible.&lt;/p&gt;


&lt;h2&gt;
  
  
  Automation changes where your skills are applied
&lt;/h2&gt;

&lt;p&gt;Imagine an experienced software engineer using an agentic workflow.&lt;/p&gt;

&lt;p&gt;The agent may:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;create an isolated worktree&lt;/li&gt;
&lt;li&gt;inspect the codebase&lt;/li&gt;
&lt;li&gt;implement a change&lt;/li&gt;
&lt;li&gt;add or modify tests&lt;/li&gt;
&lt;li&gt;run the test suite&lt;/li&gt;
&lt;li&gt;format the code&lt;/li&gt;
&lt;li&gt;analyze failures&lt;/li&gt;
&lt;li&gt;iterate on the implementation&lt;/li&gt;
&lt;li&gt;prepare the result for review&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A significant amount of traditional implementation work can happen automatically.&lt;/p&gt;

&lt;p&gt;At first glance, that sounds like the engineer is being removed from the process.&lt;/p&gt;

&lt;p&gt;But look at what the workflow still depends on.&lt;/p&gt;

&lt;p&gt;Someone needs to decide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What problem are we solving?&lt;/li&gt;
&lt;li&gt;Is this actually the right problem?&lt;/li&gt;
&lt;li&gt;What architectural constraints apply?&lt;/li&gt;
&lt;li&gt;What should the agent be allowed to change?&lt;/li&gt;
&lt;li&gt;Which existing behavior must remain compatible?&lt;/li&gt;
&lt;li&gt;What level of test coverage is sufficient?&lt;/li&gt;
&lt;li&gt;Which trade-offs are acceptable?&lt;/li&gt;
&lt;li&gt;What risks deserve additional review?&lt;/li&gt;
&lt;li&gt;Is the resulting implementation maintainable?&lt;/li&gt;
&lt;li&gt;Should this change actually reach production?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those aren't incidental details.&lt;/p&gt;

&lt;p&gt;They determine whether the automated work produces something valuable or merely produces &lt;strong&gt;something&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Execution is not ownership
&lt;/h2&gt;

&lt;p&gt;This distinction becomes increasingly important as agents become more capable.&lt;/p&gt;

&lt;p&gt;An agent can execute a task.&lt;/p&gt;

&lt;p&gt;That does not mean the agent owns the outcome.&lt;/p&gt;

&lt;p&gt;A compiler can compile bad architecture.&lt;/p&gt;

&lt;p&gt;A CI pipeline can successfully validate the wrong feature.&lt;/p&gt;

&lt;p&gt;An automated deployment system can deploy a perfectly functioning implementation of a bad product decision.&lt;/p&gt;

&lt;p&gt;AI doesn't fundamentally change this.&lt;/p&gt;

&lt;p&gt;It just increases the amount of execution we can delegate.&lt;/p&gt;

&lt;p&gt;The professional still owns the context around that execution.&lt;/p&gt;

&lt;p&gt;And that context often requires years of accumulated experience.&lt;/p&gt;


&lt;h2&gt;
  
  
  The engineer doesn't disappear. The engineer moves up a level.
&lt;/h2&gt;

&lt;p&gt;For a long time, automation has pushed engineering work upward.&lt;/p&gt;

&lt;p&gt;We stopped manually writing machine instructions.&lt;/p&gt;

&lt;p&gt;We stopped managing memory addresses for most applications.&lt;/p&gt;

&lt;p&gt;We stopped manually provisioning every server.&lt;/p&gt;

&lt;p&gt;We stopped copying binaries onto production machines.&lt;/p&gt;

&lt;p&gt;We automated builds.&lt;/p&gt;

&lt;p&gt;We automated tests.&lt;/p&gt;

&lt;p&gt;We automated infrastructure.&lt;/p&gt;

&lt;p&gt;We automated deployment.&lt;/p&gt;

&lt;p&gt;And software engineering did not disappear.&lt;/p&gt;

&lt;p&gt;Instead, the abstraction level moved.&lt;/p&gt;

&lt;p&gt;Agentic development is another step in that direction.&lt;/p&gt;

&lt;p&gt;If an agent can handle more of the implementation loop, the engineer can spend more attention on:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;How should the system evolve?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Product understanding&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What actually creates value for the user?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Constraints&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What must never be violated?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Risk&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What could go wrong, and how serious would it be?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evaluation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;How do we know the result is actually correct?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Direction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What should happen next?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Judgment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When is the machine technically successful but professionally wrong?&lt;/p&gt;

&lt;p&gt;These are not secondary skills.&lt;/p&gt;

&lt;p&gt;They increasingly become the job.&lt;/p&gt;


&lt;h2&gt;
  
  
  Full automation does not have to mean zero control
&lt;/h2&gt;

&lt;p&gt;There is another false choice hidden in many conversations about AI automation.&lt;/p&gt;

&lt;p&gt;Either:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;a human supervises every individual step, or&lt;/li&gt;
&lt;li&gt;the agent receives complete autonomy and we accept whatever happens.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Neither model is particularly attractive.&lt;/p&gt;

&lt;p&gt;If I have to approve every command, I haven't automated much.&lt;/p&gt;

&lt;p&gt;But if the system can freely publish packages, merge code, deploy services, or modify external systems without meaningful boundaries, I've probably automated too much.&lt;/p&gt;

&lt;p&gt;There is a better model.&lt;/p&gt;

&lt;p&gt;Automate aggressively &lt;strong&gt;inside well-defined boundaries&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Then require human judgment when crossing the boundaries that matter.&lt;/p&gt;


&lt;h2&gt;
  
  
  Execution permission is not delivery authorization
&lt;/h2&gt;

&lt;p&gt;This is a principle I've been thinking about while building &lt;a href="https://lezli01.is-a.dev/vincent/" rel="noopener noreferrer"&gt;vincent&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;An agent may need considerable freedom while working on a task.&lt;/p&gt;

&lt;p&gt;For example, inside an isolated worktree it may be perfectly reasonable to allow it to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;edit files
run commands
execute tests
retry failed approaches
generate artifacts
inspect diffs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Requiring approval after every action would destroy much of the value of agentic automation.&lt;/p&gt;

&lt;p&gt;But that doesn't mean the same agent automatically receives permission to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;merge the pull request
publish the package
deploy to production
close the issue
release the artifact
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Those are different permissions.&lt;/p&gt;

&lt;p&gt;I think of it as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Execution permission != delivery authorization&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent can be trusted to explore and execute within the task while the professional retains authority over whether the outcome crosses an important external boundary.&lt;/p&gt;




&lt;h2&gt;
  
  
  Human gates should be part of the workflow
&lt;/h2&gt;

&lt;p&gt;This is why vincent has explicit manual steps.&lt;/p&gt;

&lt;p&gt;A workflow can execute automatically until it reaches a meaningful decision point.&lt;/p&gt;

&lt;p&gt;At that point it pauses.&lt;/p&gt;

&lt;p&gt;The state of the task remains available for inspection: the branch, worktree, results, transcripts, and diff.&lt;/p&gt;

&lt;p&gt;The professional can then decide whether to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;approve and continue&lt;/li&gt;
&lt;li&gt;reject the result&lt;/li&gt;
&lt;li&gt;skip the action where appropriate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The important part is that the approval isn't an informal convention.&lt;/p&gt;

&lt;p&gt;It is part of the executable workflow.&lt;/p&gt;

&lt;p&gt;For example, conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;agent&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;task&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;implement-feature&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;dotnet test&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;manual&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Review the implementation before creating the PR&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;create-pull-request&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything before the gate can run efficiently.&lt;/p&gt;

&lt;p&gt;But the action that changes the outside world requires a deliberate decision.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where you put the human matters
&lt;/h2&gt;

&lt;p&gt;Simply saying &lt;em&gt;"a human reviews AI-generated code"&lt;/em&gt; isn't enough.&lt;/p&gt;

&lt;p&gt;Review timing matters.&lt;/p&gt;

&lt;p&gt;Consider this workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;agent writes code
↓
tests run
↓
PR created
↓
package published
↓
deployment starts
↓
human reviews eventually
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Technically, there is a human in the loop.&lt;/p&gt;

&lt;p&gt;Practically, there isn't much control.&lt;/p&gt;

&lt;p&gt;Compare it with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;agent writes code
↓
tests run
↓
results collected
↓
HUMAN DECISION
↓
PR / publish / deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the approval has meaning.&lt;/p&gt;

&lt;p&gt;It defines a clear boundary:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Everything before this point may happen automatically. Crossing this point requires authorization.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is much stronger than relying on someone to notice afterwards that automation made a poor decision.&lt;/p&gt;




&lt;h2&gt;
  
  
  Expertise becomes the input to automation
&lt;/h2&gt;

&lt;p&gt;There is another reason I don't believe agentic development automatically devalues experienced professionals.&lt;/p&gt;

&lt;p&gt;Good automation is built from expertise.&lt;/p&gt;

&lt;p&gt;Consider two engineers asking an agent to implement the same feature.&lt;/p&gt;

&lt;p&gt;One says:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Implement feature X.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The other provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;relevant architecture&lt;/li&gt;
&lt;li&gt;domain constraints&lt;/li&gt;
&lt;li&gt;compatibility requirements&lt;/li&gt;
&lt;li&gt;testing expectations&lt;/li&gt;
&lt;li&gt;security boundaries&lt;/li&gt;
&lt;li&gt;expected failure modes&lt;/li&gt;
&lt;li&gt;performance constraints&lt;/li&gt;
&lt;li&gt;acceptance criteria&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They may technically be using the same model.&lt;/p&gt;

&lt;p&gt;They are not going to get the same result.&lt;/p&gt;

&lt;p&gt;The quality of agentic work depends heavily on the quality of the environment, constraints, workflow, evaluation, and decisions surrounding the agent.&lt;/p&gt;

&lt;p&gt;And creating those things requires understanding the profession.&lt;/p&gt;




&lt;h2&gt;
  
  
  The valuable skill is increasingly knowing what to automate
&lt;/h2&gt;

&lt;p&gt;There is an interesting inversion happening.&lt;/p&gt;

&lt;p&gt;Previously, professional expertise was mostly demonstrated by performing difficult work yourself.&lt;/p&gt;

&lt;p&gt;Increasingly, another form of expertise is becoming important:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Knowing which parts you no longer need to perform manually.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That means recognizing repetitive processes.&lt;/p&gt;

&lt;p&gt;Turning implicit knowledge into explicit constraints.&lt;/p&gt;

&lt;p&gt;Building reliable verification.&lt;/p&gt;

&lt;p&gt;Separating reversible actions from dangerous ones.&lt;/p&gt;

&lt;p&gt;Designing useful approval boundaries.&lt;/p&gt;

&lt;p&gt;Creating workflows that can fail safely.&lt;/p&gt;

&lt;p&gt;Giving agents enough autonomy to be useful without giving them authority they don't need.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  Automation should amplify expertise, not erase it
&lt;/h2&gt;

&lt;p&gt;I don't want an AI agent that needs me to press &lt;strong&gt;Continue&lt;/strong&gt; every 30 seconds.&lt;/p&gt;

&lt;p&gt;That isn't meaningful automation.&lt;/p&gt;

&lt;p&gt;I also don't want an AI agent making every consequential decision simply because it technically can.&lt;/p&gt;

&lt;p&gt;The useful space lies between those extremes.&lt;/p&gt;

&lt;p&gt;Let agents do what machines are increasingly good at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;repetition&lt;/li&gt;
&lt;li&gt;exploration&lt;/li&gt;
&lt;li&gt;execution&lt;/li&gt;
&lt;li&gt;iteration&lt;/li&gt;
&lt;li&gt;mechanical verification&lt;/li&gt;
&lt;li&gt;information gathering&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And let professionals concentrate on what expertise is particularly valuable for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;intention&lt;/li&gt;
&lt;li&gt;architecture&lt;/li&gt;
&lt;li&gt;judgment&lt;/li&gt;
&lt;li&gt;trade-offs&lt;/li&gt;
&lt;li&gt;risk&lt;/li&gt;
&lt;li&gt;quality&lt;/li&gt;
&lt;li&gt;accountability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal isn't to keep humans artificially busy.&lt;/p&gt;

&lt;p&gt;It's to make sure human attention is spent where it has the highest value.&lt;/p&gt;




&lt;h2&gt;
  
  
  Our profession will change
&lt;/h2&gt;

&lt;p&gt;I don't think software engineering ten years from now will look exactly like software engineering today.&lt;/p&gt;

&lt;p&gt;It shouldn't.&lt;/p&gt;

&lt;p&gt;Our profession has always changed as our tools improved.&lt;/p&gt;

&lt;p&gt;Some tasks we currently consider fundamental may become almost entirely automated.&lt;/p&gt;

&lt;p&gt;Other skills will become far more important.&lt;/p&gt;

&lt;p&gt;We may spend less time writing individual implementations and more time designing systems in which implementations can be generated, evaluated, rejected, improved, and safely delivered.&lt;/p&gt;

&lt;p&gt;But that is not the same thing as giving up the profession.&lt;/p&gt;

&lt;p&gt;It is the profession evolving.&lt;/p&gt;

&lt;p&gt;The engineer who understands the system, defines the boundaries, evaluates the result, and owns the outcome still matters enormously.&lt;/p&gt;

&lt;p&gt;Perhaps more than ever.&lt;/p&gt;




&lt;h2&gt;
  
  
  The point is not to stay in the loop everywhere
&lt;/h2&gt;

&lt;p&gt;It's to stay in the loop &lt;strong&gt;where your judgment matters&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That's the philosophy I'm trying to apply while building &lt;a href="https://lezli01.is-a.dev/vincent/" rel="noopener noreferrer"&gt;vincent&lt;/a&gt;: automate repeatable agentic workloads without forcing professionals to surrender control over their outcomes.&lt;/p&gt;

&lt;p&gt;Agents can execute.&lt;/p&gt;

&lt;p&gt;Automation can orchestrate.&lt;/p&gt;

&lt;p&gt;But professionals still decide what success means.&lt;/p&gt;

&lt;p&gt;And ultimately, that decision determines the outcome.&lt;/p&gt;




&lt;p&gt;If you're interested in the implementation side of this idea, I wrote a shorter piece in the vincent documentation about explicit approval gates and separating execution permission from delivery authorization:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://lezli01.is-a.dev/vincent/docs/why/automation-without-giving-up-control.html" rel="noopener noreferrer"&gt;Automation without giving up control&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And if you're interested in vincent itself:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://lezli01.is-a.dev/vincent/" rel="noopener noreferrer"&gt;vincent — durable local orchestration for agentic development&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>softwaredevelopment</category>
      <category>opensource</category>
    </item>
    <item>
      <title>🔥 HotRulez just passed 1,000 downloads</title>
      <dc:creator>László Szabó</dc:creator>
      <pubDate>Mon, 07 Sep 2026 06:34:39 +0000</pubDate>
      <link>https://dev.to/lezli01/hotrulez-just-passed-1000-downloads-308d</link>
      <guid>https://dev.to/lezli01/hotrulez-just-passed-1000-downloads-308d</guid>
      <description>&lt;p&gt;HotRulez has officially passed &lt;strong&gt;1,000 downloads on the JetBrains Marketplace&lt;/strong&gt;. 🎉&lt;/p&gt;

&lt;p&gt;I originally built it for a very simple reason:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I wanted proper tooling for Firebase Security Rules in my IDE, but every option I found was paid.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So I built my own — and released it &lt;strong&gt;free and open source under the MIT license&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;HotRulez adds proper &lt;code&gt;.rules&lt;/code&gt; file support to JetBrains IDEs, including Android Studio and IntelliJ IDEA.&lt;/p&gt;

&lt;p&gt;Some of the features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔥 Syntax highlighting&lt;/li&gt;
&lt;li&gt;🧹 Formatting&lt;/li&gt;
&lt;li&gt;🔎 Structural diagnostics&lt;/li&gt;
&lt;li&gt;🧭 Symbol resolution and navigation&lt;/li&gt;
&lt;li&gt;📚 Quick documentation&lt;/li&gt;
&lt;li&gt;🧱 Structure view and code folding&lt;/li&gt;
&lt;li&gt;💡 Quick fixes and member inspections&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Roughly two months after its first Marketplace release, the download counter crossed &lt;strong&gt;1,000&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That's obviously a small number compared with huge developer tools, but for a niche plugin I originally created because &lt;em&gt;I personally wanted it to exist&lt;/em&gt;, it means a lot.&lt;/p&gt;

&lt;p&gt;More importantly, downloads continued growing after the initial launch traffic disappeared.&lt;/p&gt;

&lt;p&gt;That tells me something I find much more interesting than the number itself:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Other developers had the same problem.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I wrote more about the milestone, what HotRulez supports today, and what I've learned from seeing people actually use it:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://blog.lezli01.is-a.dev/blog/hotrulez-1000-downloads/" rel="noopener noreferrer"&gt;HotRulez crossed 1,000 downloads — and I'm pretty proud of that&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;HotRulez is open source, and feedback and contributions are always welcome.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>firebase</category>
      <category>jetbrains</category>
      <category>androidstudio</category>
    </item>
    <item>
      <title>Resolving one GitHub issue as a DAG of parallel AI agents</title>
      <dc:creator>László Szabó</dc:creator>
      <pubDate>Sun, 06 Sep 2026 12:58:06 +0000</pubDate>
      <link>https://dev.to/lezli01/resolving-one-github-issue-as-a-dag-of-parallel-ai-agents-34ic</link>
      <guid>https://dev.to/lezli01/resolving-one-github-issue-as-a-dag-of-parallel-ai-agents-34ic</guid>
      <description>&lt;p&gt;One AI coding agent is still fundamentally sequential.&lt;/p&gt;

&lt;p&gt;It reads something, changes something, runs a test, reacts to the result, and moves to the next piece of work.&lt;/p&gt;

&lt;p&gt;Giving it more tokens doesn't change that execution model.&lt;/p&gt;

&lt;p&gt;With vincent 0.8.0, I wanted to explore a different approach: &lt;strong&gt;split an issue into a dependency graph of work units and let independent agents execute those units concurrently.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The model is simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;nodes are implementation units&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;needs&lt;/code&gt; edges describe real dependencies&lt;/li&gt;
&lt;li&gt;independent nodes can run in parallel&lt;/li&gt;
&lt;li&gt;each unit gets its own branch and worktree&lt;/li&gt;
&lt;li&gt;dependent units start from a branch that already contains their dependencies&lt;/li&gt;
&lt;li&gt;an integration step validates the combined result&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ve now been running this workflow against vincent itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  A real run
&lt;/h2&gt;

&lt;p&gt;Issue #324 was decomposed into three units across two waves.&lt;/p&gt;

&lt;p&gt;Wave 1 produced a dependency required by the remaining work.&lt;/p&gt;

&lt;p&gt;Wave 2 then ran two independent implementation lanes concurrently.&lt;/p&gt;

&lt;p&gt;Their individual coding times were roughly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;4m18s&lt;/li&gt;
&lt;li&gt;10m22s&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sequentially: ~14m40s.&lt;/p&gt;

&lt;p&gt;As one parallel wave: ~10m22s.&lt;/p&gt;

&lt;p&gt;So this particular run saved around four minutes.&lt;/p&gt;

&lt;p&gt;That number isn't spectacular, and I don't want to pretend it is.&lt;/p&gt;

&lt;p&gt;What's more interesting is the scaling property:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;the floor becomes the longest dependency chain through the graph rather than the sum of all independent work.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are costs, of course.&lt;/p&gt;

&lt;p&gt;More parallel lanes mean more agent sessions, more worktrees, more merges, and more opportunities for integration problems. The article goes into those trade-offs as well as how vincent constrains lanes to avoid agents modifying overlapping files.&lt;/p&gt;

&lt;p&gt;I also found something counterintuitive while testing the scheduler.&lt;/p&gt;

&lt;p&gt;vincent supports both &lt;code&gt;barrier&lt;/code&gt; and &lt;code&gt;eager&lt;/code&gt; DAG scheduling.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;eager&lt;/code&gt; sounds obviously better because dependent work can start as soon as its own dependencies finish.&lt;/p&gt;

&lt;p&gt;But across the real workflows I've run so far, it saved &lt;strong&gt;zero additional time&lt;/strong&gt; compared with &lt;code&gt;barrier&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;What it did sacrifice was reproducibility: an eagerly scheduled lane can start from a different branch state depending on timing.&lt;/p&gt;

&lt;p&gt;For agent-generated code, that's a meaningful debugging cost.&lt;/p&gt;

&lt;p&gt;My takeaway so far:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Get the graph right first. The scheduler is the last thing to optimize.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I wrote up the implementation, actual workflow, real timings, costs, failure modes, and the lessons from running it on vincent itself:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.lezli01.is-a.dev/blog/vincent-dag-workflows/#two-waves-on-a-real-issue" rel="noopener noreferrer"&gt;https://blog.lezli01.is-a.dev/blog/vincent-dag-workflows/#two-waves-on-a-real-issue&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>programming</category>
      <category>community</category>
    </item>
    <item>
      <title>vincent v0.8.0: From Agent Conversations to Durable Workflows</title>
      <dc:creator>László Szabó</dc:creator>
      <pubDate>Sun, 06 Sep 2026 11:59:23 +0000</pubDate>
      <link>https://dev.to/lezli01/vincent-v080-from-agent-conversations-to-durable-workflows-501b</link>
      <guid>https://dev.to/lezli01/vincent-v080-from-agent-conversations-to-durable-workflows-501b</guid>
      <description>&lt;p&gt;I've released &lt;strong&gt;vincent v0.8.0&lt;/strong&gt;, and this release pushes the project much further toward the workflow I've wanted from coding agents from the beginning:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;explore conversationally, then turn that work into controlled and repeatable execution.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Chat first. Workflow when you're ready.
&lt;/h2&gt;

&lt;p&gt;One of the biggest additions is &lt;strong&gt;free chat&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;vincent can now maintain conversational coding sessions with Claude, Codex and Cursor, each running against its own Git worktree and branch.&lt;/p&gt;

&lt;p&gt;But the important part isn't simply having another chat interface.&lt;/p&gt;

&lt;p&gt;A chat can now be &lt;strong&gt;handed off directly to a task&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The task adopts the same worktree, branch, base revision and existing changes. Nothing needs to be copied or recreated.&lt;/p&gt;

&lt;p&gt;That means you can:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Explore a problem interactively with an agent.&lt;/li&gt;
&lt;li&gt;Inspect or modify the result.&lt;/li&gt;
&lt;li&gt;Decide that the direction is worth pursuing.&lt;/li&gt;
&lt;li&gt;Hand the existing workspace to a structured vincent workflow.&lt;/li&gt;
&lt;li&gt;Let deterministic commands, agents, checks, gates and fan-out take over.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That transition between exploration and orchestration has been one of the missing pieces in agentic development for me.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fan-out is becoming a real execution graph
&lt;/h2&gt;

&lt;p&gt;v0.8.0 also significantly expands parallel agent workloads.&lt;/p&gt;

&lt;p&gt;Fan-out lanes can now depend on sibling lanes using &lt;code&gt;needs:&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;They can also be &lt;strong&gt;derived dynamically at runtime&lt;/strong&gt;, allowing a planning step to decide what work should exist rather than requiring the complete graph to be hard-coded in advance.&lt;/p&gt;

&lt;p&gt;And with &lt;code&gt;schedule: eager&lt;/code&gt;, dependent work can start as soon as its actual dependencies have completed instead of waiting for every unrelated lane in the current round.&lt;/p&gt;

&lt;p&gt;This makes workflows such as:&lt;/p&gt;

&lt;p&gt;planning → parallel implementation → dependent implementation → integration&lt;/p&gt;

&lt;p&gt;much more natural to express.&lt;/p&gt;

&lt;p&gt;Importantly, barrier scheduling remains the default because eager scheduling intentionally trades some reproducibility for throughput.&lt;/p&gt;

&lt;h2&gt;
  
  
  Better observability
&lt;/h2&gt;

&lt;p&gt;Agent orchestration becomes difficult very quickly if you can't answer:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What did the agent actually receive?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;v0.8.0 adds a new &lt;strong&gt;Step Details&lt;/strong&gt; view that records the resolved execution context at the time the step runs.&lt;/p&gt;

&lt;p&gt;That includes things such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the fully rendered prompt or command&lt;/li&gt;
&lt;li&gt;agent, model and effort resolution&lt;/li&gt;
&lt;li&gt;permission mode&lt;/li&gt;
&lt;li&gt;timeouts&lt;/li&gt;
&lt;li&gt;loop and fan-out context&lt;/li&gt;
&lt;li&gt;rendered conditions&lt;/li&gt;
&lt;li&gt;token usage&lt;/li&gt;
&lt;li&gt;cost&lt;/li&gt;
&lt;li&gt;duration&lt;/li&gt;
&lt;li&gt;exit codes&lt;/li&gt;
&lt;li&gt;failure reasons&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This information is recorded when execution happens instead of being reconstructed later from configuration that may already have changed.&lt;/p&gt;

&lt;p&gt;For debugging non-deterministic workflows, that distinction matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Containers, GitHub and workflow authoring
&lt;/h2&gt;

&lt;p&gt;There is quite a bit more in this release.&lt;/p&gt;

&lt;p&gt;Task command/check steps can now execute inside task-scoped containers.&lt;/p&gt;

&lt;p&gt;vincent can create GitHub pull requests directly from completed work and display live CI checks inside the task workspace.&lt;/p&gt;

&lt;p&gt;The TUI workflow editor has grown from editing a subset of workflow properties into a much more complete structured editor, including nested fan-out lanes, defaults, fields and control-flow settings.&lt;/p&gt;

&lt;p&gt;Daemon configuration can also be inspected and edited through the API, CLI and TUI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Better everyday interaction
&lt;/h2&gt;

&lt;p&gt;A large amount of work also went into making vincent nicer to actually use every day.&lt;/p&gt;

&lt;p&gt;Assistant output now has richer Markdown rendering, including tables, links and highlighted code blocks.&lt;/p&gt;

&lt;p&gt;There is a raw/rendered toggle and better copy support.&lt;/p&gt;

&lt;p&gt;Chat scrolling and navigation have improved.&lt;/p&gt;

&lt;p&gt;And there's now a &lt;code&gt;quiet&lt;/code&gt; output level for the times when you want to read the conversation rather than every tool invocation behind it.&lt;/p&gt;

&lt;p&gt;vincent can also surface real usage quota windows from Codex and Claude Code where those CLIs make the information available.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where vincent is heading
&lt;/h2&gt;

&lt;p&gt;The individual features are useful, but v0.8.0 is really about the direction of the project.&lt;/p&gt;

&lt;p&gt;I don't think agentic software development should be reduced to repeatedly opening a coding agent and writing increasingly elaborate prompts.&lt;/p&gt;

&lt;p&gt;There should be a layer around those agents that understands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;execution&lt;/li&gt;
&lt;li&gt;dependencies&lt;/li&gt;
&lt;li&gt;concurrency&lt;/li&gt;
&lt;li&gt;human gates&lt;/li&gt;
&lt;li&gt;Git state&lt;/li&gt;
&lt;li&gt;retries&lt;/li&gt;
&lt;li&gt;failures&lt;/li&gt;
&lt;li&gt;costs&lt;/li&gt;
&lt;li&gt;provenance&lt;/li&gt;
&lt;li&gt;observability&lt;/li&gt;
&lt;li&gt;recovery&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;while still leaving room for the interactive conversation that makes coding agents so useful in the first place.&lt;/p&gt;

&lt;p&gt;That's the problem I'm trying to solve with &lt;strong&gt;vincent&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The complete v0.8.0 release notes are here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lezli01.is-a.dev/vincent/changelog.html" rel="noopener noreferrer"&gt;https://lezli01.is-a.dev/vincent/changelog.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'd especially love feedback from people already using coding agents for workflows that go beyond a single interactive session.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>coding</category>
      <category>git</category>
    </item>
    <item>
      <title>Vincent 0.7.0: The control plane now runs its own development</title>
      <dc:creator>László Szabó</dc:creator>
      <pubDate>Sun, 30 Aug 2026 09:24:37 +0000</pubDate>
      <link>https://dev.to/lezli01/vincent-070-the-control-plane-now-runs-its-own-development-1m84</link>
      <guid>https://dev.to/lezli01/vincent-070-the-control-plane-now-runs-its-own-development-1m84</guid>
      <description>&lt;p&gt;I just released &lt;strong&gt;Vincent 0.7.0&lt;/strong&gt;, and this release marks an important milestone for the project:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vincent now builds Vincent.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;All development on the project now goes through Vincent workflows — from creating an approved GitHub issue through planning, implementation, verification, human gates, merge, and release preparation.&lt;/p&gt;

&lt;p&gt;The journey from 0.4.0 to 0.7.0 added quite a bit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Workflows became real interfaces
&lt;/h2&gt;

&lt;p&gt;Workflows can declare their expected inputs, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;labels&lt;/li&gt;
&lt;li&gt;types&lt;/li&gt;
&lt;li&gt;required fields&lt;/li&gt;
&lt;li&gt;RE2 validation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vincent also gained a workflow-authoring skill designed around a principle I care about quite a lot: &lt;strong&gt;don't use an AI agent when deterministic automation can do the job better.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Commands and native control flow come first. Agents are used where reasoning is actually required.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recovery became part of the workflow
&lt;/h2&gt;

&lt;p&gt;Real automation fails.&lt;/p&gt;

&lt;p&gt;So Vincent now has mechanisms for continuing rather than throwing work away:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;follow-ups on completed tasks&lt;/li&gt;
&lt;li&gt;recorded repair agents for blocked tasks&lt;/li&gt;
&lt;li&gt;retry backoff&lt;/li&gt;
&lt;li&gt;safer daemon backup/restore&lt;/li&gt;
&lt;li&gt;improved diagnostics through &lt;code&gt;vincent doctor&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The control plane became scriptable
&lt;/h2&gt;

&lt;p&gt;0.7.0 significantly expands the CLI.&lt;/p&gt;

&lt;p&gt;Tasks can now be started idempotently, created from GitHub issues, populated through JSON/stdin, queried through &lt;code&gt;vincent status&lt;/code&gt;, limited with &lt;code&gt;max_cost_usd&lt;/code&gt;, and integrated with notifications.&lt;/p&gt;

&lt;p&gt;Logs, transcripts, approvals, retries, repairs and task answers can all be handled without entering the TUI.&lt;/p&gt;

&lt;p&gt;The TUI hasn't been neglected either — tasks now open into a dedicated workspace containing steps, attempts, metadata, output and file-grouped diffs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vincent builds Vincent
&lt;/h2&gt;

&lt;p&gt;This is the part I'm most excited about.&lt;/p&gt;

&lt;p&gt;My own development workflow now uses Vincent itself:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GitHub issue
    ↓
planning
    ↓
implementation
    ↓
documentation
    ↓
cross-platform verification
    ↓
human gates
    ↓
merge
    ↓
release audit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude Code, Codex or Cursor can provide the inference.&lt;/p&gt;

&lt;p&gt;Vincent owns the durable workflow, state and verification around them.&lt;/p&gt;

&lt;p&gt;That's the architecture I've been working toward: &lt;strong&gt;a local, inspectable and vendor-independent control plane for coding agents.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Vincent is also &lt;strong&gt;MIT licensed again&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I wrote a deeper overview of everything that changed between 0.4.0 and 0.7.0 here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.lezli01.is-a.dev/blog/vincent-0-7-release/" rel="noopener noreferrer"&gt;https://blog.lezli01.is-a.dev/blog/vincent-0-7-release/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feedback and contributions are very welcome.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>devops</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Vincent v0.7.0: Better visibility, stronger automation, less babysitting</title>
      <dc:creator>László Szabó</dc:creator>
      <pubDate>Sat, 29 Aug 2026 08:52:52 +0000</pubDate>
      <link>https://dev.to/lezli01/vincent-v070-better-visibility-stronger-automation-less-babysitting-3m89</link>
      <guid>https://dev.to/lezli01/vincent-v070-better-visibility-stronger-automation-less-babysitting-3m89</guid>
      <description>&lt;p&gt;Vincent v0.7.0 is out.&lt;/p&gt;

&lt;p&gt;This release is mainly about one thing:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Making agentic development workflows easier to operate when you are not staring at them.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As Vincent has grown, simply starting an agent has become the easy part.&lt;/p&gt;

&lt;p&gt;The harder questions are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is it doing right now?&lt;/li&gt;
&lt;li&gt;Does it need input from me?&lt;/li&gt;
&lt;li&gt;Can I control it from a script or over SSH?&lt;/li&gt;
&lt;li&gt;Can it notify me when something important happens?&lt;/li&gt;
&lt;li&gt;Can I inspect what happened without opening the TUI?&lt;/li&gt;
&lt;li&gt;Can I put limits around how much an autonomous task can consume?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;v0.7.0 tackles a lot of that.&lt;/p&gt;




&lt;h2&gt;
  
  
  A proper workspace for running tasks
&lt;/h2&gt;

&lt;p&gt;The TUI received one of its biggest UX improvements so far.&lt;/p&gt;

&lt;p&gt;Opening a task now takes you into a dedicated full-screen workspace with separate views for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Steps &amp;amp; Attempts&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Task Details&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diff&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Attempt selection follows you between views, outputs can be switched between retries, and failed attempts expose their result summary directly in the timeline.&lt;/p&gt;

&lt;p&gt;The main task board can now stay what it should be: a board.&lt;/p&gt;

&lt;p&gt;The details live where they belong.&lt;/p&gt;




&lt;h2&gt;
  
  
  Agents can finally tell you what they are doing
&lt;/h2&gt;

&lt;p&gt;A running step can now publish its own status:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vincent status &lt;span class="s2"&gt;"Running integration tests"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That status becomes visible in the TUI and is also available through the API.&lt;/p&gt;

&lt;p&gt;This sounds like a small feature, but it changes the experience of running longer workflows quite a bit.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;running...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;you can see something closer to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;» Investigating the failing authentication test
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;» Waiting for the GitHub checks to complete
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agent steps also receive the &lt;code&gt;VINCENT_*&lt;/code&gt; environment variables that command and check steps already had, so agents can report their own progress through their shell tools.&lt;/p&gt;




&lt;h2&gt;
  
  
  Vincent can notify you when it actually needs you
&lt;/h2&gt;

&lt;p&gt;Previously, Vincent could ring the terminal bell when a task reached an interactive state.&lt;/p&gt;

&lt;p&gt;That is useful — assuming the TUI is open.&lt;/p&gt;

&lt;p&gt;v0.7.0 adds configurable external notifications.&lt;/p&gt;

&lt;p&gt;You can run a command whenever a task enters states such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;notify&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;notify-send&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Vincent&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;needs&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;attention"&lt;/span&gt;
  &lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;blocked&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;awaiting_input&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;awaiting_gate&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vincent passes a JSON payload to the command, including information about the task and the transition.&lt;/p&gt;

&lt;p&gt;Because this is command-based rather than tied to a specific notification provider, you can integrate it with whatever makes sense for your setup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;desktop notifications&lt;/li&gt;
&lt;li&gt;Slack&lt;/li&gt;
&lt;li&gt;scripts&lt;/li&gt;
&lt;li&gt;webhooks&lt;/li&gt;
&lt;li&gt;file drops&lt;/li&gt;
&lt;li&gt;custom internal tooling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The important part is that a task can now run in the background and actively tell you when human involvement is useful.&lt;/p&gt;




&lt;h2&gt;
  
  
  The CLI can now control almost everything
&lt;/h2&gt;

&lt;p&gt;A major goal of this release was reducing the dependency on the TUI for operational tasks.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;vincent task&lt;/code&gt; now includes commands for actions such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vincent task pause
vincent task resume
vincent task skip
vincent task approve
vincent task reject
vincent task retry
vincent task repair
vincent task archive
vincent task answer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes Vincent much easier to use from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;shell scripts&lt;/li&gt;
&lt;li&gt;CI environments&lt;/li&gt;
&lt;li&gt;cron jobs&lt;/li&gt;
&lt;li&gt;remote SSH sessions&lt;/li&gt;
&lt;li&gt;automation around existing developer tooling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, blocked tasks can now be discovered and retried programmatically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vincent task &lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;--state&lt;/span&gt; blocked &lt;span class="nt"&gt;--json&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.[].id'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  | xargs &lt;span class="nt"&gt;-n1&lt;/span&gt; vincent task retry
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The TUI remains useful for interactive work, but it is no longer the only practical control surface.&lt;/p&gt;




&lt;h2&gt;
  
  
  Logs and transcripts are first-class CLI citizens
&lt;/h2&gt;

&lt;p&gt;Two new commands make debugging and remote operation significantly easier:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vincent daemon logs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vincent task transcript &amp;lt;task-id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Daemon logs are read directly from disk, so they still work even if the daemon itself is unavailable.&lt;/p&gt;

&lt;p&gt;Task transcripts can be viewed as human-readable output, NDJSON, or raw agent JSONL.&lt;/p&gt;

&lt;p&gt;That makes it much easier to inspect what happened inside an attempt without digging through Vincent's data directory manually.&lt;/p&gt;




&lt;h2&gt;
  
  
  Create tasks directly from GitHub issues
&lt;/h2&gt;

&lt;p&gt;Vincent can now create a task from a GitHub issue.&lt;/p&gt;

&lt;p&gt;For projects connected to GitHub, Vincent can pull in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the issue title&lt;/li&gt;
&lt;li&gt;description&lt;/li&gt;
&lt;li&gt;issue URL&lt;/li&gt;
&lt;li&gt;labels&lt;/li&gt;
&lt;li&gt;assignee&lt;/li&gt;
&lt;li&gt;milestone&lt;/li&gt;
&lt;li&gt;issue number&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Workflow fields can also be populated from issue metadata when their definitions match.&lt;/p&gt;

&lt;p&gt;This is a particularly useful bridge between traditional development workflows and agentic execution.&lt;/p&gt;

&lt;p&gt;An issue can increasingly become the starting point for a reproducible workflow rather than merely a description of work waiting for someone to pick it up.&lt;/p&gt;




&lt;h2&gt;
  
  
  Put a budget around autonomous work
&lt;/h2&gt;

&lt;p&gt;v0.7.0 also introduces per-task spending limits.&lt;/p&gt;

&lt;p&gt;That means autonomous workflows can have explicit boundaries around how much agent execution they are allowed to consume.&lt;/p&gt;

&lt;p&gt;For long-running or heavily automated workflows, this is an important safety mechanism.&lt;/p&gt;

&lt;p&gt;Autonomy is much more useful when it comes with limits.&lt;/p&gt;




&lt;h2&gt;
  
  
  Better tooling for writing workflows
&lt;/h2&gt;

&lt;p&gt;Workflow authors also get some useful additions.&lt;/p&gt;

&lt;p&gt;Create a starting workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vincent workflow init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And render a workflow template without running it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vincent workflow render
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The latter is especially useful when building workflows with fields and templates because you can validate the generated result before actually executing anything.&lt;/p&gt;




&lt;h2&gt;
  
  
  Smaller changes that matter
&lt;/h2&gt;

&lt;p&gt;There is a lot more in this release, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;idempotency keys for task creation&lt;/li&gt;
&lt;li&gt;stronger checks around restricted agent execution&lt;/li&gt;
&lt;li&gt;agent adapter version and capability reporting&lt;/li&gt;
&lt;li&gt;safer process recovery&lt;/li&gt;
&lt;li&gt;workflow source tracking&lt;/li&gt;
&lt;li&gt;new built-in workflows&lt;/li&gt;
&lt;li&gt;improved retry and polling behavior&lt;/li&gt;
&lt;li&gt;better wrapping of long content in the TUI&lt;/li&gt;
&lt;li&gt;macOS release signing/notarization work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find the full list in the changelog.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where Vincent is heading
&lt;/h2&gt;

&lt;p&gt;The goal with Vincent is not to build another chat UI around an LLM.&lt;/p&gt;

&lt;p&gt;I want the unit of work to be a &lt;strong&gt;workflow&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Agents are one tool inside that workflow, alongside commands, checks, control flow, human gates, retries, parallel execution, and deterministic automation.&lt;/p&gt;

&lt;p&gt;And increasingly, I want those workflows to be able to run without requiring constant supervision.&lt;/p&gt;

&lt;p&gt;v0.7.0 is a fairly big step in that direction.&lt;/p&gt;

&lt;p&gt;If you're experimenting with agentic software development, I'd love to hear what kinds of workflows you're building.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full changelog:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://lezli01.is-a.dev/vincent/changelog.html" rel="noopener noreferrer"&gt;https://lezli01.is-a.dev/vincent/changelog.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/lezli01/vincent" rel="noopener noreferrer"&gt;https://github.com/lezli01/vincent&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>agents</category>
      <category>softwaredevelopment</category>
    </item>
  </channel>
</rss>
