<?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>Forem: hagishun</title>
    <description>The latest articles on Forem by hagishun (@hagishun).</description>
    <link>https://forem.com/hagishun</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3775012%2F3acdaddc-b5db-4c9d-9979-3b18a092afc1.png</url>
      <title>Forem: hagishun</title>
      <link>https://forem.com/hagishun</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/hagishun"/>
    <language>en</language>
    <item>
      <title>How I Stopped Silent Regressions with GitHub Copilot Coding Agent and ADR</title>
      <dc:creator>hagishun</dc:creator>
      <pubDate>Sun, 01 Mar 2026 11:24:30 +0000</pubDate>
      <link>https://forem.com/hagishun/how-i-stopped-silent-regressions-with-github-copilot-coding-agent-and-adr-1a8l</link>
      <guid>https://forem.com/hagishun/how-i-stopped-silent-regressions-with-github-copilot-coding-agent-and-adr-1a8l</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;While using Copilot coding agent, I ran into regressions where the design doc (file tree) drifted out of sync with the implementation — without anyone noticing&lt;/li&gt;
&lt;li&gt;The root cause wasn't the AI. It was that assumptions kept changing, but we had no way to lock them down&lt;/li&gt;
&lt;li&gt;I introduced ADR (Architecture Decision Record) to explicitly fix assumptions and have the agent execute steps in order&lt;/li&gt;
&lt;li&gt;Result: the same class of regression hasn't happened since, and we got the workflow stabilized in about 2 hours&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Background: The "Silent Regression" Problem
&lt;/h2&gt;

&lt;p&gt;I was using Copilot coding agent to automate the flow from design → implementation → testing.&lt;/p&gt;

&lt;p&gt;At some point, even though the implementation looked correct, I started noticing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The design doc and the actual implementation were subtly misaligned&lt;/li&gt;
&lt;li&gt;The file structure didn't match the original intent&lt;/li&gt;
&lt;li&gt;Follow-up changes broke something elsewhere&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This was a &lt;strong&gt;"regression that doesn't look like one at first glance"&lt;/strong&gt; — and that made it hard to catch.&lt;/p&gt;




&lt;h2&gt;
  
  
  Root Cause: Not the AI — The Assumptions Weren't Locked
&lt;/h2&gt;

&lt;p&gt;My first instinct was to blame:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The agent's understanding being too shallow?&lt;/li&gt;
&lt;li&gt;Weak prompts?&lt;/li&gt;
&lt;li&gt;Model limitations?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But when I traced the logs, that wasn't it.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Was Actually Happening
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The file tree definition in &lt;code&gt;architect.md&lt;/code&gt; had changed mid-way&lt;/li&gt;
&lt;li&gt;But the agent kept implementing based on &lt;strong&gt;the assumptions it read at the start&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;And I hadn't explicitly communicated that the assumptions had changed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In short:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The assumptions were changing, but there was no mechanism to lock or update them&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That was the real cause.&lt;/p&gt;

&lt;h3&gt;
  
  
  Before vs. After: Visualized
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Before: Assumptions drift&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sequenceDiagram
    participant H as Human
    participant I as Issue
    participant A as Agent
    participant C as Code

    H-&amp;gt;&amp;gt;I: File issue (assumptions at this point in time)
    Note over I: ⚠️ Assumptions change mid-way
    H-&amp;gt;&amp;gt;I: Design changes via another PR
    I--&amp;gt;&amp;gt;A: Old assumptions passed to agent
    A-&amp;gt;&amp;gt;C: Implements based on stale assumptions
    Note over C: Regression occurs (hard to notice)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;After: Assumptions locked via ADR&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sequenceDiagram
    participant H as Human
    participant ADR as ADR
    participant A as Agent
    participant C as Code

    H-&amp;gt;&amp;gt;ADR: Document decisions (goal, constraints, verification)
    H-&amp;gt;&amp;gt;A: Point Issue to ADR
    A-&amp;gt;&amp;gt;ADR: Reads latest assumptions
    A-&amp;gt;&amp;gt;C: Implements based on ADR
    A-&amp;gt;&amp;gt;A: Runs verification — confirms zero drift
    Note over C: Implementation matches design
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Why Agents Are Particularly Vulnerable to This
&lt;/h3&gt;

&lt;p&gt;In a human team, you can share context implicitly — through conversation, memory, shared understanding. You fill in the gaps naturally.&lt;/p&gt;

&lt;p&gt;Agents can't do that. They can't carry context across sessions. If the assumptions change but aren't explicitly communicated, &lt;strong&gt;the agent will keep treating whatever it last read as ground truth.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ADR has traditionally been framed as a "large team documentation practice." But in agentic development, it plays a different role: &lt;strong&gt;a handoff document from humans to the agent.&lt;/strong&gt; The more you rely on agents, the more critical it becomes to have a clear answer to "where are the decisions written down?"&lt;/p&gt;




&lt;h2&gt;
  
  
  Reference: The github/gh-aw Design Philosophy
&lt;/h2&gt;

&lt;p&gt;I drew inspiration from &lt;a href="https://github.com/github/gh-aw" rel="noopener noreferrer"&gt;github/gh-aw&lt;/a&gt; — GitHub's reference repository for Agentic Workflows.&lt;/p&gt;

&lt;p&gt;Its core philosophy is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Humans explicitly write down what was decided&lt;/li&gt;
&lt;li&gt;Agents work within those fixed assumptions&lt;/li&gt;
&lt;li&gt;When assumptions change, decisions must be updated first&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Solution: Lock Assumptions with ADR
&lt;/h2&gt;

&lt;p&gt;The approach I took was &lt;strong&gt;ADR-based workflow&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is an ADR?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Architecture Decision Record&lt;/strong&gt; — a document that captures "what" was decided, "why," and "to what extent." See &lt;a href="https://adr.github.io/" rel="noopener noreferrer"&gt;adr.github.io&lt;/a&gt; for more.&lt;/p&gt;

&lt;h3&gt;
  
  
  How I Used It
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Scoped to Chapter 4 of &lt;code&gt;architect.md&lt;/code&gt;: the file tree definition&lt;/li&gt;
&lt;li&gt;Explicitly marked what was "already decided" vs. "still open"&lt;/li&gt;
&lt;li&gt;Had the agent execute steps sequentially, using the ADR as its ground truth&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Repository Structure
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.
├── architect.md        # Overall design
├── adr/
│   └── ADR-001.md      # Locked decisions and assumptions
└── .github/
    └── copilot-instructions.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Example ADR Content
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Content&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Scope&lt;/td&gt;
&lt;td&gt;File tree structure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Decision&lt;/td&gt;
&lt;td&gt;Responsibility separation under &lt;code&gt;pkg/&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Out of scope&lt;/td&gt;
&lt;td&gt;Future extension directories&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prohibited&lt;/td&gt;
&lt;td&gt;Any structural changes without updating ADR first&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  How to Drive the Agent (The Important Part)
&lt;/h2&gt;

&lt;p&gt;I wrote the following steps into the ADR and had the agent execute them in order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Read the ADR&lt;/li&gt;
&lt;li&gt;Check the relevant section of &lt;code&gt;architect.md&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Implement&lt;/li&gt;
&lt;li&gt;Test and verify&lt;/li&gt;
&lt;li&gt;Report results&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This stopped two recurring failure modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Expanding scope beyond what was intended&lt;/li&gt;
&lt;li&gt;Continuing to implement based on stale assumptions&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Results: Regressions Became a Solvable Problem
&lt;/h2&gt;

&lt;p&gt;Since switching to this workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The same class of regression hasn't happened again&lt;/li&gt;
&lt;li&gt;When something does go wrong, it's immediately clear which assumption broke&lt;/li&gt;
&lt;li&gt;Review load on the human side has gone down&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI didn't get smarter. &lt;strong&gt;We just locked the assumptions.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;AI will fill in ambiguous assumptions on its own — that's not a bug, it's by design&lt;/li&gt;
&lt;li&gt;If assumptions change, humans need to document the updated decision explicitly&lt;/li&gt;
&lt;li&gt;Copilot coding agent is powerful, but it doesn't eliminate the need for design and decision-making&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If anything:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Humans decide. Agents execute."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The cleaner that division is, the more stable your development gets.&lt;/p&gt;




&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;Regressions aren't caused by AI. They're caused by &lt;strong&gt;workflows that don't record decisions.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ADRs are unglamorous. But in agentic development, they work surprisingly well.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next (Under Consideration)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Publish an ADR template&lt;/li&gt;
&lt;li&gt;Build a minimal sample based on the gh-aw structure&lt;/li&gt;
&lt;li&gt;Turn this into a team-facing hands-on workshop&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://adr.github.io/" rel="noopener noreferrer"&gt;ADR (Architecture Decision Records)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/github/gh-aw" rel="noopener noreferrer"&gt;github/gh-aw&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/copilot/using-github-copilot/using-the-copilot-coding-agent" rel="noopener noreferrer"&gt;GitHub Copilot coding agent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/copilot/customizing-copilot" rel="noopener noreferrer"&gt;Copilot customization&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>github</category>
      <category>githubcopilot</category>
      <category>agents</category>
      <category>githubagenticworkflow</category>
    </item>
    <item>
      <title>I Confused Copilot Coding Agent with Agentic Workflows — Turns Out the Guardrails Are the Point</title>
      <dc:creator>hagishun</dc:creator>
      <pubDate>Sat, 21 Feb 2026 16:00:22 +0000</pubDate>
      <link>https://forem.com/hagishun/i-confused-copilot-coding-agent-with-agentic-workflows-turns-out-the-guardrails-are-the-point-38m</link>
      <guid>https://forem.com/hagishun/i-confused-copilot-coding-agent-with-agentic-workflows-turns-out-the-guardrails-are-the-point-38m</guid>
      <description>&lt;h1&gt;
  
  
  I Tried GitHub Agentic Workflows and It Was Nothing Like Copilot Coding Agent
&lt;/h1&gt;

&lt;p&gt;This article is for developers who are already familiar with GitHub Actions and Copilot. The goal is to clarify how Agentic Workflows differs in design philosophy from what you might already know.&lt;/p&gt;

&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;In February 2026, GitHub announced "Agentic Workflows" as a technical preview.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.blog/2026-02-16-automate-repository-tasks-with-github-agentic-workflows/" rel="noopener noreferrer"&gt;https://github.blog/2026-02-16-automate-repository-tasks-with-github-agentic-workflows/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I heard "AI that automates repository tasks," I jumped in to try it — and immediately got confused. This article documents that confusion along with what I actually learned by getting my hands dirty.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Initial Mistake: Is Coding Agent = Agentic Workflows?
&lt;/h2&gt;

&lt;p&gt;I asked Copilot Agent Mode in VS Code to walk me through experiencing GitHub Agentic Workflows. It guided me through this flow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Set up a Python Todo app in a repository&lt;/li&gt;
&lt;li&gt;Create a GitHub Issue&lt;/li&gt;
&lt;li&gt;Assign Copilot Coding Agent to the Issue&lt;/li&gt;
&lt;li&gt;A PR gets created automatically&lt;/li&gt;
&lt;li&gt;GitHub Actions runs the tests&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It was genuinely useful. Just by assigning Copilot to an Issue, a PR with test code was auto-generated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But this was "Copilot Coding Agent" — not "Agentic Workflows."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I only realized this after re-reading the official announcement. They're completely different things.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Copilot Coding Agent (assign to Issue → auto-generate PR) is an existing feature. GitHub Agentic Workflows (gh-aw), announced in February 2026, is a separate mechanism entirely.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What GitHub Agentic Workflows Actually Is
&lt;/h2&gt;

&lt;h3&gt;
  
  
  In one sentence
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;A system where you write "what you want done" in Markdown, and an AI agent continuously automates repository tasks based on that intent.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How it differs from GitHub Actions
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;GitHub Actions (YAML)&lt;/th&gt;
&lt;th&gt;Agentic Workflows (Markdown)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;How you write it&lt;/td&gt;
&lt;td&gt;Define "steps" in YAML&lt;/td&gt;
&lt;td&gt;Write "intent" in Markdown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Who executes&lt;/td&gt;
&lt;td&gt;Runs defined steps in order&lt;/td&gt;
&lt;td&gt;AI interprets intent and acts autonomously&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Decision-making&lt;/td&gt;
&lt;td&gt;None (just if/else branching)&lt;/td&gt;
&lt;td&gt;AI reads context and judges&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Handling unknowns&lt;/td&gt;
&lt;td&gt;Only predefined patterns&lt;/td&gt;
&lt;td&gt;AI adapts to novel situations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;Build, test, deploy&lt;/td&gt;
&lt;td&gt;Repetitive tasks requiring judgment&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Actions and Agentic Workflows coexist — one doesn't replace the other.&lt;/strong&gt; In my own repository, &lt;code&gt;test.yml&lt;/code&gt; (Actions) and &lt;code&gt;issue-triage.md&lt;/code&gt; (Agentic Workflows) ran side by side without conflict.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it differs from Copilot Coding Agent
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Copilot Coding Agent&lt;/th&gt;
&lt;th&gt;Agentic Workflows&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Trigger&lt;/td&gt;
&lt;td&gt;Manually assign to an Issue&lt;/td&gt;
&lt;td&gt;Auto-triggered by schedule or events&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Purpose&lt;/td&gt;
&lt;td&gt;One-off coding tasks&lt;/td&gt;
&lt;td&gt;Continuous repository automation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output&lt;/td&gt;
&lt;td&gt;Creates a PR&lt;/td&gt;
&lt;td&gt;Comments, labels, Issues, PRs, and more&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;How it's defined&lt;/td&gt;
&lt;td&gt;Instructions in Issue body&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;.github/workflows/*.md&lt;/code&gt; files&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Let's Walk Through It
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Setup
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install the gh-aw CLI extension&lt;/span&gt;
gh extension &lt;span class="nb"&gt;install &lt;/span&gt;github/gh-aw

&lt;span class="c"&gt;# Initialize the repository&lt;/span&gt;
gh aw init

&lt;span class="c"&gt;# Create a workflow template&lt;/span&gt;
gh aw new issue-triage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Writing the Workflow
&lt;/h3&gt;

&lt;p&gt;I created &lt;code&gt;.github/workflows/issue-triage.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;issues&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;types&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;opened&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;reopened&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;permissions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;contents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;read&lt;/span&gt;
  &lt;span class="na"&gt;issues&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;read&lt;/span&gt;

&lt;span class="na"&gt;safe-outputs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;add-comment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;max&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
  &lt;span class="na"&gt;add-labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

&lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;github&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Issue Triage&lt;/span&gt;

When a new Issue is created, automatically triage it.

&lt;span class="gu"&gt;## What to do&lt;/span&gt;
&lt;span class="p"&gt;
1.&lt;/span&gt; Read the Issue title and body to understand the content
&lt;span class="p"&gt;2.&lt;/span&gt; Apply the appropriate label from the following:
&lt;span class="p"&gt;   -&lt;/span&gt; &lt;span class="sb"&gt;`bug`&lt;/span&gt; - Bug report
&lt;span class="p"&gt;   -&lt;/span&gt; &lt;span class="sb"&gt;`enhancement`&lt;/span&gt; - Feature request
&lt;span class="p"&gt;   -&lt;/span&gt; &lt;span class="sb"&gt;`question`&lt;/span&gt; - Question
&lt;span class="p"&gt;   -&lt;/span&gt; &lt;span class="sb"&gt;`documentation`&lt;/span&gt; - Documentation-related
&lt;span class="p"&gt;3.&lt;/span&gt; Add a comment to the Issue:
&lt;span class="p"&gt;   -&lt;/span&gt; Briefly summarize the Issue content
&lt;span class="p"&gt;   -&lt;/span&gt; Mention any relevant source files if applicable
&lt;span class="p"&gt;   -&lt;/span&gt; Suggest a priority level (high / medium / low)

&lt;span class="gu"&gt;## Rules&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; Respond in English
&lt;span class="p"&gt;-&lt;/span&gt; Keep comments polite and concise
&lt;span class="p"&gt;-&lt;/span&gt; If unclear, apply the &lt;span class="sb"&gt;`question`&lt;/span&gt; label and ask for clarification
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key is the &lt;strong&gt;two-layer structure: YAML (frontmatter) + Markdown (intent)&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontmatter&lt;/strong&gt;: When to run, what it can read, what it's allowed to do&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Markdown body&lt;/strong&gt;: What you want the AI to do (natural language)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Compile and Push
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Generate a lock file (.lock.yml) from the Markdown&lt;/span&gt;
gh aw compile

&lt;span class="c"&gt;# Push to the repository&lt;/span&gt;
git add &lt;span class="nt"&gt;-A&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"feat: add Issue triage workflow"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; git push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Results
&lt;/h3&gt;

&lt;p&gt;After creating an Issue, the following happened automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Issue created:&lt;/strong&gt; "I want the list command output to show timestamps"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the AI did automatically:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Applied the &lt;code&gt;enhancement&lt;/code&gt; label (correctly identified as a feature request)&lt;/li&gt;
&lt;li&gt;✅ Posted a comment automatically&lt;/li&gt;
&lt;li&gt;✅ Identified the relevant source file (&lt;code&gt;todo.py&lt;/code&gt;) down to specific line numbers&lt;/li&gt;
&lt;li&gt;✅ Suggested an implementation direction&lt;/li&gt;
&lt;li&gt;✅ Assessed priority as "medium"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All from just writing "here's what I want" in natural language. The AI read the repository context and made its own judgments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Guardrails: The Most Important Part of the Design
&lt;/h2&gt;

&lt;p&gt;What stuck with me most after trying this was &lt;strong&gt;how strict the guardrails are&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Precisely because you're handing the AI ambiguous intent, &lt;strong&gt;a system to prevent unintended behavior is essential&lt;/strong&gt;. Agentic Workflows implements this through three layers of guardrails.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. permissions (input constraints)
&lt;/h3&gt;

&lt;p&gt;Controls what the AI can "read."&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;permissions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;contents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;read&lt;/span&gt;    &lt;span class="c1"&gt;# Can read code, but cannot write&lt;/span&gt;
  &lt;span class="na"&gt;issues&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;read&lt;/span&gt;      &lt;span class="c1"&gt;# Can read Issues, but cannot close them&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. safe-outputs (output constraints)
&lt;/h3&gt;

&lt;p&gt;Explicitly grants what the AI is "allowed to do."&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;safe-outputs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;add-comment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;      &lt;span class="c1"&gt;# Can add one comment max&lt;/span&gt;
    &lt;span class="na"&gt;max&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
  &lt;span class="na"&gt;add-labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;       &lt;span class="c1"&gt;# Can add labels&lt;/span&gt;
  &lt;span class="c1"&gt;# create-pull-request ← Not listed, so PRs are off-limits&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Real experience&lt;/strong&gt;: When I initially wrote &lt;code&gt;issues: write&lt;/code&gt;, the compile step rejected it with an error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;strict mode: write permission 'issues: write' is not allowed for security reasons.
Use 'safe-outputs.add-comment', 'safe-outputs.add-labels' to perform write operations safely.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of "write access to do anything," the design enforces &lt;strong&gt;individually scoped output permissions&lt;/strong&gt; like "only allow adding comments."&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Sandboxed Execution
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Network isolation&lt;/li&gt;
&lt;li&gt;PRs are never auto-merged (humans must always review)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Guardrails Matter
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What the AI might otherwise do&lt;/th&gt;
&lt;th&gt;Guardrail&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Close all Issues without permission&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;close-issue&lt;/code&gt; not in &lt;code&gt;safe-outputs&lt;/code&gt; → blocked&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Directly modify code&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;permissions: contents: read&lt;/code&gt; → read-only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Send data to external APIs&lt;/td&gt;
&lt;td&gt;Network isolation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Allow ambiguity, but limit the blast radius&lt;/strong&gt; — this is the design philosophy unique to agentic systems, and it's fundamentally different from CI/CD.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Where I Got Stuck
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Confusing Copilot Coding Agent with Agentic Workflows
&lt;/h3&gt;

&lt;p&gt;The flow that Copilot Agent Mode guided me through was "Actions + Coding Agent" — a completely different thing from Agentic Workflows (gh-aw). Interestingly, the AI assistant itself couldn't accurately distinguish between the two.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Secrets configuration is required
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;gh aw init&lt;/code&gt; → &lt;code&gt;gh aw compile&lt;/code&gt; → push is not enough. You also need to configure a token for the AI engine.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create a Fine-grained PAT (personal account, with Copilot Requests permission)&lt;/span&gt;
&lt;span class="c"&gt;# ※ Resource owner must be a personal account, not an Org&lt;/span&gt;
gh aw secrets &lt;span class="nb"&gt;set &lt;/span&gt;COPILOT_GITHUB_TOKEN &lt;span class="nt"&gt;--value&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;PAT&amp;gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. A UI trap when creating the PAT
&lt;/h3&gt;

&lt;p&gt;To get the "Copilot Requests" permission to appear on the Fine-grained PAT creation screen:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set &lt;strong&gt;Resource owner&lt;/strong&gt; to your personal account (it won't appear under an Organization)&lt;/li&gt;
&lt;li&gt;Set &lt;strong&gt;Repository access&lt;/strong&gt; to "Public Repositories" (required for the option to show)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is because Copilot licenses are issued at the individual account level.&lt;/p&gt;

&lt;h2&gt;
  
  
  6 Use Case Patterns
&lt;/h2&gt;

&lt;p&gt;From the official documentation:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Continuous triage&lt;/strong&gt; — Auto-classify Issues and apply labels (what I tried today)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Continuous documentation&lt;/strong&gt; — Auto-update README as code changes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Continuous simplification&lt;/strong&gt; — Identify refactoring opportunities and create PRs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Continuous test improvement&lt;/strong&gt; — Evaluate test coverage and auto-add tests&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Continuous quality maintenance&lt;/strong&gt; — Investigate CI failures and suggest fixes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Continuous reporting&lt;/strong&gt; — Periodically generate repository health reports&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What I learned&lt;/th&gt;
&lt;th&gt;Details&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Agentic Workflows ≠ Coding Agent&lt;/td&gt;
&lt;td&gt;Completely different — it's about writing intent in Markdown for continuous automation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Not a replacement for Actions&lt;/td&gt;
&lt;td&gt;Use Actions for CI/CD, Agentic Workflows for tasks requiring judgment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Guardrails are the core design&lt;/td&gt;
&lt;td&gt;Three-layer defense: permissions + safe-outputs + sandbox&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup gotchas&lt;/td&gt;
&lt;td&gt;Secrets configuration, UI constraints when creating PATs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;GitHub Agentic Workflows is currently in technical preview. The vision it points toward: you open your repository in the morning and Issues are already triaged, CI failures are explained, and documentation is up to date.&lt;/p&gt;

&lt;p&gt;For Enterprise adoption, the next questions will be around governance: who is allowed to create Agentic Workflows, and how far should permissions go.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.blog/2026-02-16-automate-repository-tasks-with-github-agentic-workflows/" rel="noopener noreferrer"&gt;GitHub Official Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.github.io/gh-aw/" rel="noopener noreferrer"&gt;Official Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.github.io/gh-aw/setup/quick-start/" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.github.io/gh-aw/blog/2026-01-12-welcome-to-pelis-agent-factory/" rel="noopener noreferrer"&gt;Workflow Gallery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.github.com/gh-aw/reference/engines/" rel="noopener noreferrer"&gt;AI Engine Configuration (token setup)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/NRI-Oxalis/Beginner_manual/blob/main/docs/github-agentic-workflows/index.md" rel="noopener noreferrer"&gt;my manual&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nri-oxalis.github.io/Beginner_manual/" rel="noopener noreferrer"&gt;My Site&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>github</category>
      <category>githubactions</category>
      <category>githubcopilot</category>
      <category>agenticworkflow</category>
    </item>
    <item>
      <title>I Open-Sourced a 67-file GitHub Enterprise Playbook — Why and How I Built It</title>
      <dc:creator>hagishun</dc:creator>
      <pubDate>Mon, 16 Feb 2026 06:20:31 +0000</pubDate>
      <link>https://forem.com/hagishun/i-open-sourced-a-67-file-github-enterprise-playbook-why-and-how-i-built-it-2a1b</link>
      <guid>https://forem.com/hagishun/i-open-sourced-a-67-file-github-enterprise-playbook-why-and-how-i-built-it-2a1b</guid>
      <description>&lt;p&gt;I published an open-source GitHub Enterprise learning guide (67 files) based on real-world onboarding / enablement work.&lt;/p&gt;

&lt;p&gt;I’d love feedback from the community:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Please leave questions or suggestions as GitHub Discussions / Issues&lt;/li&gt;
&lt;li&gt;PRs are also welcome&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Qiita (JP): &lt;a href="https://qiita.com/hagix/items/a64ed1b6fc39454e1bb7" rel="noopener noreferrer"&gt;https://qiita.com/hagix/items/a64ed1b6fc39454e1bb7&lt;/a&gt;&lt;br&gt;
GitHub repo: &lt;a href="https://github.com/NRI-Oxalis/Beginner_manual" rel="noopener noreferrer"&gt;https://github.com/NRI-Oxalis/Beginner_manual&lt;/a&gt;&lt;br&gt;
GItHub Page: &lt;a href="https://nri-oxalis.github.io/Beginner_manual/" rel="noopener noreferrer"&gt;https://nri-oxalis.github.io/Beginner_manual/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The content is currently Japanese-first.&lt;br&gt;
I'm planning to expand English coverage, &lt;br&gt;
and community contributions are very welcome.&lt;/p&gt;

</description>
      <category>github</category>
      <category>opensource</category>
      <category>githubcopilot</category>
    </item>
  </channel>
</rss>
