<?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: Suyash Padole</title>
    <description>The latest articles on DEV Community by Suyash Padole (@suyashatlantis).</description>
    <link>https://dev.to/suyashatlantis</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%2F3670865%2F3b7a13b9-79c1-46f5-b298-c113e800e6e7.jpg</url>
      <title>DEV Community: Suyash Padole</title>
      <link>https://dev.to/suyashatlantis</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/suyashatlantis"/>
    <language>en</language>
    <item>
      <title>I put my clients in the same Discord channel as my AI agents (and Switch stopped them from sneaking in free work)</title>
      <dc:creator>Suyash Padole</dc:creator>
      <pubDate>Sat, 07 Nov 2026 06:47:22 +0000</pubDate>
      <link>https://dev.to/suyashatlantis/i-put-my-clients-in-the-same-discord-channel-as-my-ai-agents-and-switch-stopped-them-from-sneaking-16af</link>
      <guid>https://dev.to/suyashatlantis/i-put-my-clients-in-the-same-discord-channel-as-my-ai-agents-and-switch-stopped-them-from-sneaking-16af</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F51cw19iwqz9tmfuip3u3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F51cw19iwqz9tmfuip3u3.jpg" alt="Glass Agency" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every freelancer and small agency I know has the same three problems:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;"What's the status?"&lt;/strong&gt; Clients can't see the work, so they ask. Again and again.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope creep.&lt;/strong&gt; &lt;em&gt;"Can you also add a blog? It's small."&lt;/em&gt; You say yes to avoid friction, then work for free.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unchecked quotes.&lt;/strong&gt; Pricing gets done in someone's head at 11 PM.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For the &lt;a href="https://www.wemakedevs.org/hackathons/switch" rel="noopener noreferrer"&gt;Flip the Switch hackathon&lt;/a&gt; I built &lt;strong&gt;Glass Agency&lt;/strong&gt;: a web studio where the client sits &lt;strong&gt;in the same Discord channel as the studio's AI staff&lt;/strong&gt; and can watch the work happen. Four AI agents scope, build, test and bill the project in front of the client. The founder (me) approves every price from a private room the client can't see.&lt;/p&gt;

&lt;p&gt;🎬 &lt;strong&gt;2½-minute demo:&lt;/strong&gt;   &lt;iframe src="https://www.youtube.com/embed/iT23r25aiKE" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;br&gt;
💻 &lt;strong&gt;Repo (templates + pricing tool):&lt;/strong&gt; &lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/suyash-boop" rel="noopener noreferrer"&gt;
        suyash-boop
      &lt;/a&gt; / &lt;a href="https://github.com/suyash-boop/glass-agency" rel="noopener noreferrer"&gt;
        glass-agency
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A web studio where the client sits in the same Discord channel as your AI staff. Built on Switch for Flip the Switch hackathon.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/suyash-boop/glass-agency/docs/brand/pane-512.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fsuyash-boop%2Fglass-agency%2FHEAD%2Fdocs%2Fbrand%2Fpane-512.png" alt="Pane, the Glass Agency mascot" width="180"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Glass Agency&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;b&gt;A web studio where the client sits in the same Discord channel as your AI staff.&lt;/b&gt;&lt;br&gt;
Meet Pane: you can see the work happening inside.&lt;/p&gt;
&lt;p&gt;Built for the &lt;a href="https://www.wemakedevs.org/hackathons/switch" rel="nofollow noopener noreferrer"&gt;Flip the Switch hackathon&lt;/a&gt; · Track 1: Best Business Workflow · Powered by &lt;a href="https://github.com/sandbox-quantum/switch" rel="noopener noreferrer"&gt;Switch&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Small agencies and freelancers lose hours every week to "what's the status?" emails, scope creep, and quotes nobody double-checked. Glass Agency makes the work &lt;strong&gt;transparent&lt;/strong&gt; to the client and keeps money decisions with a human. The client writes in their project channel, four AI agents scope, build, test and bill the work in front of them, and the founder approves every price from a private deal desk.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
  &lt;a href="https://youtu.be/iT23r25aiKE" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/6a3d5389b308b6912f1bf92a004e7c4a8bc86e1ae0ee353ebdc2b3efac344e46/68747470733a2f2f696d672e796f75747562652e636f6d2f76692f6954323372323561694b452f6d617872657364656661756c742e6a7067" alt="Watch the Glass Agency demo" width="720"&gt;&lt;/a&gt;&lt;br&gt;
  &lt;b&gt;🎬 &lt;a href="https://youtu.be/iT23r25aiKE" rel="nofollow noopener noreferrer"&gt;Watch the 2½-minute demo&lt;/a&gt;&lt;/b&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example output:&lt;/strong&gt; in the demo, the agents scoped, built, deployed and QA-tested this site for the test client: &lt;a href="https://suyash-boop.github.io/glass-inkwell-site/" rel="nofollow noopener noreferrer"&gt;suyash-boop.github.io/glass-inkwell-site&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;&lt;div class="table-wrapper-paragraph"&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;table&gt;

&lt;thead&gt;

&lt;tr&gt;

&lt;th&gt;The studio's AI staff checks in&lt;/th&gt;

&lt;th&gt;A client room the client can see&lt;/th&gt;

&lt;th&gt;The private&lt;/th&gt;

&lt;/tr&gt;

&lt;/thead&gt;

&lt;/table&gt;&lt;/div&gt;…&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/suyash-boop/glass-agency" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;This post covers what I built, &lt;strong&gt;how Switch makes it possible&lt;/strong&gt;, how to set it up yourself, and the problems I hit on Windows (with fixes), so your first Switch project goes faster than mine did.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is Switch, in one paragraph
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/sandbox-quantum/switch" rel="noopener noreferrer"&gt;Switch&lt;/a&gt; is open-source infrastructure that puts AI agents into the team chat you already use: Slack, Microsoft Teams, Discord, Telegram or Mattermost. Each channel becomes a &lt;strong&gt;room&lt;/strong&gt;: a shared log of messages plus instructions, documents, roles and links that every person and agent in it can read. You bring your own agents (Claude Code, Codex, OpenCode, Cursor, Antigravity, or anything that speaks Switch's agent protocol). Switch ships no models; it connects agents and people.&lt;/p&gt;

&lt;p&gt;The important mental shift: &lt;strong&gt;an agent stops being something only you talk to in a terminal, and becomes a teammate other people can talk to.&lt;/strong&gt; That raises a question a terminal never had to answer: &lt;em&gt;who is allowed to tell this agent what to do?&lt;/em&gt; Switch answers it, and Glass Agency is built around that answer.&lt;/p&gt;




&lt;h2&gt;
  
  
  The design
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv16qygdck8nv7odg8rv0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv16qygdck8nv7odg8rv0.jpg" alt="How Glass Agency works" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Four agents&lt;/strong&gt;, all Claude Code running on my laptop through Switch Console:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;Job&lt;/th&gt;
&lt;th&gt;Who can instruct it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Scoper&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Account lead. Talks to the client, writes the scope with acceptance criteria, prices it&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;anyone&lt;/strong&gt; in its rooms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Builder&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Builds the site and publishes it to GitHub Pages&lt;/td&gt;
&lt;td&gt;founder + agents only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;QA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tests the live site against every acceptance criterion&lt;/td&gt;
&lt;td&gt;founder + agents only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Invoicer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Produces the invoice from the pricing tool&lt;/td&gt;
&lt;td&gt;founder + agents only&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Two rooms per client&lt;/strong&gt;, linked to each other:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;#inkwell&lt;/code&gt;: the client's project room. The client, the founder and all four agents are in it.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;#inkwell-deal-desk&lt;/code&gt;: private. Only the founder, Scoper and Invoicer. Costs, hours, margins and approvals live here.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And a private &lt;code&gt;#glass-hq&lt;/code&gt; where the founder talks to the studio.&lt;/p&gt;

&lt;h3&gt;
  
  
  The flow
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Founder in &lt;code&gt;#glass-hq&lt;/code&gt;: &lt;em&gt;"@glass-scoper onboard a new client: Inkwell Tattoo Studio…"&lt;/em&gt; → the Scoper runs a &lt;strong&gt;Switch template&lt;/strong&gt; and both client rooms appear.&lt;/li&gt;
&lt;li&gt;Client describes what they need → the Scoper writes a &lt;code&gt;scope&lt;/code&gt; &lt;strong&gt;room document&lt;/strong&gt; with acceptance criteria.&lt;/li&gt;
&lt;li&gt;The Scoper prices it with a script (no LLM math) and posts the &lt;strong&gt;internal&lt;/strong&gt; quote in the deal desk → founder approves.&lt;/li&gt;
&lt;li&gt;The client gets a quote &lt;strong&gt;without&lt;/strong&gt; cost or margin → replies &lt;em&gt;accept&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;The Scoper hands off to the Builder → plan → build → GitHub Pages → hands off to QA.&lt;/li&gt;
&lt;li&gt;QA tests the live URL → failures go back to the Builder → re-test → pass.&lt;/li&gt;
&lt;li&gt;Client approves → Invoicer drafts the invoice in the deal desk → founder approves → it's posted to the client.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  The moment that sold me on Switch
&lt;/h2&gt;

&lt;p&gt;Halfway through the build, the client tries the oldest trick in the book:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8mbxdjgbgr20jeudj3fz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8mbxdjgbgr20jeudj3fz.jpg" alt="Blocked by Switch" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cassandra:&lt;/strong&gt; @glass-builder can you also add an online shop? for free please 🙏&lt;br&gt;
&lt;strong&gt;Builder:&lt;/strong&gt; &lt;a class="mentioned-user" href="https://dev.to/cassandra"&gt;@cassandra&lt;/a&gt; I only take instructions from my owner…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I didn't write a single line of permission code for that. It's one field on the agent:&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="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{studio}-builder"&lt;/span&gt;
  &lt;span class="na"&gt;addressing&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;owner-agents&lt;/span&gt;   &lt;span class="c1"&gt;# only the founder and the founder's other agents&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{studio}-scoper"&lt;/span&gt;
  &lt;span class="na"&gt;addressing&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;anyone&lt;/span&gt;         &lt;span class="c1"&gt;# anyone in its rooms, including the client&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Switch's &lt;strong&gt;addressing policy&lt;/strong&gt; decides who may mention an agent, target it, or hand it work, and anyone not permitted gets a &lt;strong&gt;visible refusal&lt;/strong&gt; instead of silence. In Glass Agency that turns into a business rule: &lt;em&gt;clients talk to the account lead; nobody talks the builder into free work.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So the client asked the Scoper instead, which treated it as a &lt;strong&gt;change request&lt;/strong&gt;: priced it, took it to the deal desk, and logged it in the scope's change log once approved. (In the demo I chose to waive it, which is also a founder decision, and the scope records it as a no-charge change.)&lt;/p&gt;




&lt;h2&gt;
  
  
  Same deal, two views
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F695h2l7jj879397qlfzy.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F695h2l7jj879397qlfzy.jpg" alt="Two rooms, two views" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The deal desk is a separate &lt;strong&gt;private room&lt;/strong&gt;, linked from the client room with a label. Linking matters: the link is a signpost that tells agents &lt;em&gt;where to take money questions&lt;/em&gt;, without letting anyone in. The founder sees cost, hours and margin; the client only ever sees the price.&lt;/p&gt;

&lt;p&gt;Prices come from &lt;code&gt;tools/pricing.py&lt;/code&gt; and a &lt;code&gt;rate-card.json&lt;/code&gt;, not from the model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python tools/pricing.py quote &lt;span class="nt"&gt;--items&lt;/span&gt; landing_page,gallery,whatsapp_button,seo_basics,copywriting &lt;span class="nt"&gt;--days&lt;/span&gt; 4 &lt;span class="nt"&gt;--view&lt;/span&gt; internal
python tools/pricing.py quote &lt;span class="nt"&gt;--items&lt;/span&gt; ... &lt;span class="nt"&gt;--days&lt;/span&gt; 4 &lt;span class="nt"&gt;--view&lt;/span&gt; client      &lt;span class="c"&gt;# no cost / margin&lt;/span&gt;
python tools/pricing.py invoice &lt;span class="nt"&gt;--client&lt;/span&gt; &lt;span class="s2"&gt;"Inkwell Tattoo Studio"&lt;/span&gt; &lt;span class="nt"&gt;--items&lt;/span&gt; ... &lt;span class="nt"&gt;--change&lt;/span&gt; extra_section &lt;span class="nt"&gt;--days&lt;/span&gt; 4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;LLMs are great at conversation and terrible at being audited. Keeping the money in a deterministic script means every quote and invoice can be reproduced.&lt;/p&gt;




&lt;h2&gt;
  
  
  Room documents are the shared memory
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;scope&lt;/code&gt; document is the contract between every participant:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;Scoper&lt;/strong&gt; writes it (summary, deliverables, acceptance criteria, timeline, out of scope, change log).&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Builder&lt;/strong&gt; builds from it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;QA&lt;/strong&gt; tests against its acceptance criteria.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Invoicer&lt;/strong&gt; bills what it says was accepted.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj3m8avde6xzfwffujz91.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj3m8avde6xzfwffujz91.jpg" alt="Change log updated" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every agent that joins a room gets the room's instructions and a list of its documents, so nobody has to re-explain the project. Room instructions also carry the rules (&lt;em&gt;"never repeat deal-desk content in this room"&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1fwm8ang27auaakc9zrq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1fwm8ang27auaakc9zrq.jpg" alt="QA pass" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And the result, a real site the agents shipped:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdaqwgs9s57zm3us193k8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdaqwgs9s57zm3us193k8.jpg" alt="The live site" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Templates: one message, one client workspace
&lt;/h2&gt;

&lt;p&gt;A Switch template is a YAML file that creates agents, rooms, links and documents in one go. I wrote two:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;studio.template.yaml&lt;/code&gt;&lt;/strong&gt; (run once) creates the four agents and &lt;code&gt;#glass-hq&lt;/code&gt;.&lt;br&gt;
&lt;strong&gt;&lt;code&gt;new-client.template.yaml&lt;/code&gt;&lt;/strong&gt; (run per client) creates the client room, the private deal desk, and the link between them:&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;rooms&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{client}"&lt;/span&gt;
    &lt;span class="na"&gt;channel_type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;channel_private&lt;/span&gt;
    &lt;span class="na"&gt;agents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{scoper}"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{builder}"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{qa}"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{invoicer}"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
    &lt;span class="na"&gt;users&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{$creator}"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{client_user}"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
    &lt;span class="na"&gt;docs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;how-we-work&lt;/span&gt;
        &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;- Tell @{scoper} what you need…&lt;/span&gt;
    &lt;span class="na"&gt;kickoff&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
      &lt;span class="s"&gt;@{scoper} {client_name} has joined. Welcome them…&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{client}-deal-desk"&lt;/span&gt;
    &lt;span class="na"&gt;channel_type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;channel_private&lt;/span&gt;
    &lt;span class="na"&gt;agents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{scoper}"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{invoicer}"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
    &lt;span class="na"&gt;users&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{$creator}"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="na"&gt;links&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;from&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{client}"&lt;/span&gt;
    &lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{client}-deal-desk"&lt;/span&gt;
    &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;deal desk&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The nicest part: &lt;strong&gt;agents can run templates themselves&lt;/strong&gt; (&lt;code&gt;run_template&lt;/code&gt;). So onboarding a client is a chat message to the Scoper, and the &lt;code&gt;kickoff:&lt;/code&gt; line wakes the agent in the new room.&lt;/p&gt;




&lt;h2&gt;
  
  
  Set it up yourself (about 30 minutes)
&lt;/h2&gt;

&lt;p&gt;You'll need: &lt;a href="https://github.com/sandbox-quantum/switch/releases/latest" rel="noopener noreferrer"&gt;Switch Console&lt;/a&gt;, Docker Desktop (running), Claude Code signed in (&lt;code&gt;claude&lt;/code&gt;), the GitHub CLI signed in (&lt;code&gt;gh auth login&lt;/code&gt;), Python 3.10+, a Discord server you admin, and a second Discord account to play the client.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Start Switch.&lt;/strong&gt; Open Switch Console → &lt;em&gt;Get started&lt;/em&gt; → &lt;em&gt;On this computer&lt;/em&gt; → &lt;em&gt;Start&lt;/em&gt; → choose Claude Code for &lt;strong&gt;switch-buddy&lt;/strong&gt; (the built-in helper agent).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Connect Discord.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Discord Developer Portal → &lt;em&gt;New Application&lt;/em&gt; → &lt;em&gt;Bot&lt;/em&gt;: copy the token and turn on &lt;strong&gt;Server Members Intent&lt;/strong&gt; and &lt;strong&gt;Message Content Intent&lt;/strong&gt; (without the latter, agents receive empty messages).&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;OAuth2 → URL Generator&lt;/em&gt;: scopes &lt;code&gt;bot&lt;/code&gt; + &lt;code&gt;applications.commands&lt;/code&gt;; permissions View Channels, Send Messages, Send Messages in Threads, &lt;strong&gt;Manage Webhooks&lt;/strong&gt; (agents post under their own names through it), Manage Channels, Manage Roles, Read Message History, Attach Files, Add Reactions. Invite the bot.&lt;/li&gt;
&lt;li&gt;Switch Console → &lt;em&gt;Home → Messaging apps → Connect → Discord&lt;/em&gt;: name it &lt;code&gt;Discord&lt;/code&gt;, paste the token and your server ID, then &lt;strong&gt;This is me&lt;/strong&gt; to link your Discord account. (Until you link it, your own agents won't recognise you as their owner.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Import both templates&lt;/strong&gt; (Templates → Import template), saved as &lt;code&gt;glass studio&lt;/code&gt; and &lt;code&gt;glass new client&lt;/code&gt;, shared.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Create the studio.&lt;/strong&gt; Ask switch-buddy: &lt;em&gt;"Run my saved group template "glass studio" with its defaults: studio = glass, provider = claude, on my machine, bridge = Discord."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Onboard a client.&lt;/strong&gt; In &lt;code&gt;#glass-hq&lt;/code&gt;, pick &lt;code&gt;@glass-scoper&lt;/code&gt; from the autocomplete and write: &lt;em&gt;"onboard a new client: Inkwell Tattoo Studio, slug inkwell, Discord user &lt;code&gt;&amp;lt;username&amp;gt;&lt;/code&gt;"&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Play the client&lt;/strong&gt; from the second account and approve prices in the deal desk with &lt;code&gt;@glass-scoper approved&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Things I wish I'd known (Windows, Switch Console 0.40 / server 0.31)
&lt;/h2&gt;

&lt;p&gt;Windows is &lt;em&gt;early access&lt;/em&gt; for Switch Console. Everything worked in the end, but these cost me hours:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. A "Command Line Tools only" PostgreSQL breaks the local server.&lt;/strong&gt; Console looks in &lt;code&gt;C:\Program Files\PostgreSQL\*&lt;/code&gt; first. Mine had &lt;code&gt;initdb.exe&lt;/code&gt; but no &lt;code&gt;share\&lt;/code&gt; folder, so setup died with &lt;code&gt;initdb: file ".../share/postgres.bki" does not exist&lt;/code&gt;. Console ships its own PostgreSQL 16; point it there in &lt;code&gt;%APPDATA%\switchdash\local-switch-server\native\run\postgres.json&lt;/code&gt; (&lt;code&gt;"binDir"&lt;/code&gt; → the bundled &lt;code&gt;...\toolchain\bundle-&amp;lt;id&amp;gt;\postgres\bin&lt;/code&gt;, &lt;code&gt;"major": 16&lt;/code&gt;), then press &lt;em&gt;Start&lt;/em&gt; again (not &lt;em&gt;Start over&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The template form says "Not supported here".&lt;/strong&gt; On a local server, the Templates → &lt;em&gt;Use&lt;/em&gt; form checks providers over SSH and fails. Workaround: ask &lt;strong&gt;switch-buddy&lt;/strong&gt; to run the template; agents run it server-side and it works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. On Discord, agents are mentioned through roles.&lt;/strong&gt; Each agent gets a Discord role with its name. Pick it from the &lt;code&gt;@&lt;/code&gt; autocomplete. Typing "@Scoper" as plain text, or replying to the agent's message, does &lt;strong&gt;not&lt;/strong&gt; wake it. Every instruction needs a real mention. And write &lt;em&gt;people's&lt;/em&gt; usernames as plain text when an agent needs them: a mention chip sends a hidden ID.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Claude Code's auto mode won't run a script it doesn't know.&lt;/strong&gt; Agents run with Claude Code's auto mode, which (reasonably) refused to run &lt;code&gt;pricing.py&lt;/code&gt; from a cloned repo. Instead of turning on &lt;em&gt;Bypass permissions&lt;/em&gt; for an agent that talks to clients, add a narrow allow-rule in the agent's working directory, &lt;code&gt;.claude/settings.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"permissions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"allow"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bash(python tools/pricing.py:*)"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then &lt;code&gt;!reset @glass-scoper&lt;/code&gt; so the session reloads it. (Write the file without a BOM; Windows PowerShell 5's &lt;code&gt;Set-Content -Encoding UTF8&lt;/code&gt; adds one.) For the builder, which needs &lt;code&gt;git&lt;/code&gt;/&lt;code&gt;gh&lt;/code&gt;, I used Bypass during the demo recording. It only takes work from me, but turn it off when you're done.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Don't pin model IDs in templates unless you need to.&lt;/strong&gt; When I pinned specific models, the auto-mode safety check briefly couldn't reach its model and every shell command failed with "temporarily unavailable". Leaving the provider default was more reliable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. GitHub Pages builds can hang.&lt;/strong&gt; Add an empty &lt;code&gt;.nojekyll&lt;/code&gt; file to static sites (Jekyll chokes on some), and if a deploy sits in "building" for minutes, &lt;code&gt;gh api -X POST repos/&amp;lt;owner&amp;gt;/&amp;lt;repo&amp;gt;/pages/builds&lt;/code&gt; kicks it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. If an agent goes silent after a restart, restart Console fully.&lt;/strong&gt; After my local server restarted, the Scoper's &lt;em&gt;session host&lt;/em&gt; didn't come back. Messages and even &lt;code&gt;!reset&lt;/code&gt; were dropped (&lt;code&gt;The session host is not running&lt;/code&gt;). Quitting every Switch Console process and reopening fixed it. Also keep Console open and your PC awake while you demo: the agents run on your machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Progress threads are public.&lt;/strong&gt; Switch posts each agent's &lt;code&gt;Working…&lt;/code&gt; status (with tool names) in a thread on the triggering message. For a "glass" agency that's on-brand, but for real clients I'd want a summary-only mode.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why it only works on Switch
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhm5q0uq1h9fvw3tir2v4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhm5q0uq1h9fvw3tir2v4.jpg" alt="Why Switch" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Take Switch away and Glass Agency falls apart:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No &lt;strong&gt;rooms in Discord&lt;/strong&gt; → the client needs another app, and nobody uses another app.&lt;/li&gt;
&lt;li&gt;No &lt;strong&gt;per-agent addressing&lt;/strong&gt; → the client can instruct the builder directly, and scope creep is back.&lt;/li&gt;
&lt;li&gt;No &lt;strong&gt;agent-to-agent hand-offs&lt;/strong&gt; → I'm copy-pasting between terminals.&lt;/li&gt;
&lt;li&gt;No &lt;strong&gt;room documents&lt;/strong&gt; → every agent works from a different idea of the scope.&lt;/li&gt;
&lt;li&gt;No &lt;strong&gt;private linked rooms&lt;/strong&gt; → margins leak into client chat.&lt;/li&gt;
&lt;li&gt;No &lt;strong&gt;templates agents can run&lt;/strong&gt; → onboarding a client is 20 minutes of clicking.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I'd build next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A client-facing "summary only" progress mode&lt;/li&gt;
&lt;li&gt;Payment links on invoices&lt;/li&gt;
&lt;li&gt;Hosting Switch on a small server so client rooms stay up 24/7 without my laptop&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;--target-total&lt;/code&gt; flag so founder-negotiated prices flow straight into invoices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're trying Switch for the first time: start with the &lt;a href="https://docs.switchagents.ai/switch-rooms/getting-started" rel="noopener noreferrer"&gt;10-minute quickstart&lt;/a&gt;, connect the docs to your coding agent (&lt;code&gt;claude mcp add switch-docs --transport http https://docs.switchagents.ai/mcp&lt;/code&gt;), and think about &lt;strong&gt;who should be allowed to talk to each agent&lt;/strong&gt; before you think about prompts. That one decision shaped my whole design.&lt;/p&gt;

&lt;p&gt;Thanks to WeMakeDevs, DevTools Academy and the Switch team for the hackathon. ⭐ &lt;a href="https://github.com/sandbox-quantum/switch" rel="noopener noreferrer"&gt;Star Switch on GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Built with Switch, Claude Code, Discord and GitHub Pages. #HowISwitch&lt;/em&gt;&lt;/p&gt;

</description>
      <category>switch</category>
      <category>agents</category>
      <category>discord</category>
      <category>hackathon</category>
    </item>
    <item>
      <title>Slack Just Turned a Chat Channel Into a Place Where AI Agents Can Write Code</title>
      <dc:creator>Suyash Padole</dc:creator>
      <pubDate>Sun, 23 Aug 2026 17:48:42 +0000</pubDate>
      <link>https://dev.to/suyashatlantis/slack-just-turned-a-chat-channel-into-a-place-where-ai-agents-can-write-code-1m2m</link>
      <guid>https://dev.to/suyashatlantis/slack-just-turned-a-chat-channel-into-a-place-where-ai-agents-can-write-code-1m2m</guid>
      <description>&lt;p&gt;Slack just made something that sounds a little weird feel surprisingly normal.&lt;/p&gt;

&lt;p&gt;On &lt;strong&gt;August 21, 2026&lt;/strong&gt;, Slack announced &lt;strong&gt;Slack Code&lt;/strong&gt;, a new way for teams to work with coding agents directly inside dedicated Slack channels.&lt;/p&gt;

&lt;p&gt;The idea is pretty simple: instead of constantly switching between Slack, your IDE, GitHub, and various AI coding tools, you can bring coding agents directly into the conversation.&lt;/p&gt;

&lt;p&gt;Agents from tools like Claude Code, Devin, GitHub Copilot, and Vercel can work inside these workflows while the team discusses and reviews the work.&lt;/p&gt;

&lt;p&gt;And honestly, I think this is more interesting than it first sounds.&lt;/p&gt;

&lt;h2&gt;
  
  
  From this...
&lt;/h2&gt;

&lt;p&gt;The traditional workflow looks 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;Slack
  ↓
Discuss the task
  ↓
Open IDE
  ↓
Write code
  ↓
Run tests
  ↓
Create PR
  ↓
Come back to Slack
  ↓
Discuss changes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We've gotten pretty used to this.&lt;/p&gt;

&lt;p&gt;But agentic coding changes the workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  To this...
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Slack
  ↓
Describe the task
  ↓
Coding agent works on it
  ↓
Agent runs tests
  ↓
Team reviews the result
  ↓
Iterate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The interesting shift isn't simply &lt;strong&gt;"AI can write code."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We've known that for a while.&lt;/p&gt;

&lt;p&gt;The bigger shift is that &lt;strong&gt;software development is becoming a collaboration between humans and agents.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine a developer asking an agent to investigate a bug.&lt;/p&gt;

&lt;p&gt;The agent starts working.&lt;/p&gt;

&lt;p&gt;A second developer can look at the progress.&lt;/p&gt;

&lt;p&gt;A PM can provide context.&lt;/p&gt;

&lt;p&gt;The team can discuss the implementation.&lt;/p&gt;

&lt;p&gt;And the agent can continue working based on that conversation.&lt;/p&gt;

&lt;p&gt;That's a very different development workflow from simply having an AI autocomplete your next line of code.&lt;/p&gt;

&lt;h2&gt;
  
  
  But there's a funny problem
&lt;/h2&gt;

&lt;p&gt;We've spent years telling developers:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Please don't deploy code directly from Slack."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And now we're giving Slack an AI that can write code for us. 😭&lt;/p&gt;

&lt;p&gt;Jokes aside, this raises some serious engineering questions.&lt;/p&gt;

&lt;p&gt;How much access should an agent have?&lt;/p&gt;

&lt;p&gt;Should it be able to modify production code?&lt;/p&gt;

&lt;p&gt;Should every action require human approval?&lt;/p&gt;

&lt;p&gt;What happens when the agent misunderstands the task?&lt;/p&gt;

&lt;p&gt;How do we audit everything it did?&lt;/p&gt;

&lt;p&gt;These aren't just AI questions.&lt;/p&gt;

&lt;p&gt;They're &lt;strong&gt;software engineering and security questions.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The real challenge
&lt;/h2&gt;

&lt;p&gt;Getting AI agents into our development workflow is probably not going to be the difficult part.&lt;/p&gt;

&lt;p&gt;The difficult part will be deciding &lt;strong&gt;where humans should still be in the loop.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The future might not be:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Humans write all the code.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;blockquote&gt;
&lt;p&gt;AI writes all the code.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It might be:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Humans define the problem, agents handle much of the execution, and humans review the important decisions.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We're still figuring out what that workflow should actually look like.&lt;/p&gt;

&lt;p&gt;And apparently, one of the places we're going to figure it out is... Slack. 😭&lt;/p&gt;

&lt;h1&gt;
  
  
  AI #AIAgents #SoftwareEngineering #Developers #Coding #Tech #FutureOfWork
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>agents</category>
    </item>
    <item>
      <title>AI Agents Just Crossed an Uncomfortable Line</title>
      <dc:creator>Suyash Padole</dc:creator>
      <pubDate>Fri, 14 Aug 2026 06:31:20 +0000</pubDate>
      <link>https://dev.to/suyashatlantis/ai-agents-just-crossed-an-uncomfortable-line-12f8</link>
      <guid>https://dev.to/suyashatlantis/ai-agents-just-crossed-an-uncomfortable-line-12f8</guid>
      <description>&lt;p&gt;AI agents are getting really good at doing things on their own.&lt;/p&gt;

&lt;p&gt;And honestly, that's both exciting and a little scary.&lt;/p&gt;

&lt;p&gt;The UK’s AI Security Institute recently reported that, during a cybersecurity evaluation, AI agents took &lt;strong&gt;unsanctioned actions involving real people and organisations&lt;/strong&gt;, including attempts to influence a real open-source project.&lt;/p&gt;

&lt;p&gt;That's quite different from the usual:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The AI generated some bad code."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We're now talking about AI systems that can actually &lt;strong&gt;take actions in the real world&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What makes AI agents different?
&lt;/h2&gt;

&lt;p&gt;A normal chatbot mostly waits for you to ask something and then gives you an answer.&lt;/p&gt;

&lt;p&gt;An AI agent can be given a goal and then figure out the steps needed to achieve it.&lt;/p&gt;

&lt;p&gt;For example, an agent might be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Browse the internet&lt;/li&gt;
&lt;li&gt;Read and modify code&lt;/li&gt;
&lt;li&gt;Run commands&lt;/li&gt;
&lt;li&gt;Call APIs&lt;/li&gt;
&lt;li&gt;Interact with external services&lt;/li&gt;
&lt;li&gt;Make decisions based on what it finds&lt;/li&gt;
&lt;li&gt;Continue working through multiple steps without asking for permission every time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's incredibly useful for developers.&lt;/p&gt;

&lt;p&gt;Imagine telling an agent:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Find why this API is slow, fix the issue, run the tests, and open a pull request."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And it actually does it.&lt;/p&gt;

&lt;p&gt;But there's an obvious problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happens when the agent makes a bad decision?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Autonomy is the feature. Autonomy is also the risk.
&lt;/h2&gt;

&lt;p&gt;This is where things get interesting.&lt;/p&gt;

&lt;p&gt;The more capable an agent becomes, the more permissions we want to give it.&lt;/p&gt;

&lt;p&gt;We want it to access our repositories.&lt;/p&gt;

&lt;p&gt;Then our servers.&lt;/p&gt;

&lt;p&gt;Then our databases.&lt;/p&gt;

&lt;p&gt;Then production APIs.&lt;/p&gt;

&lt;p&gt;At some point, we're essentially giving a piece of software the ability to interact with the same systems that humans do.&lt;/p&gt;

&lt;p&gt;And unlike a human developer, an AI agent can potentially execute hundreds of actions extremely quickly.&lt;/p&gt;

&lt;p&gt;That's why I think we're going to hear a lot more about &lt;strong&gt;AI permissions and sandboxing&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of asking only:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"How smart is this agent?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;we also need to ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What is this agent allowed to do?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Maybe "permission engineering" becomes a thing
&lt;/h2&gt;

&lt;p&gt;We've spent years thinking about things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;Authorization&lt;/li&gt;
&lt;li&gt;API permissions&lt;/li&gt;
&lt;li&gt;Sandboxing&lt;/li&gt;
&lt;li&gt;Rate limiting&lt;/li&gt;
&lt;li&gt;Least-privilege access&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI agents make all of these even more important.&lt;/p&gt;

&lt;p&gt;An agent shouldn't automatically get access to everything just because it &lt;em&gt;can&lt;/em&gt; use it.&lt;/p&gt;

&lt;p&gt;A better approach might be:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Give the agent the minimum permissions it needs, isolate it where possible, and require human approval for high-impact actions.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Basically, treat an AI agent less like autocomplete...&lt;/p&gt;

&lt;p&gt;…and more like &lt;strong&gt;untrusted software that has hands.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The interesting part about agentic AI isn't just how autonomous these systems can become.&lt;/p&gt;

&lt;p&gt;It's figuring out &lt;strong&gt;how much autonomy we should actually give them.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And maybe the next important AI engineering skill won't be prompt engineering.&lt;/p&gt;

&lt;p&gt;It'll be &lt;strong&gt;permission engineering.&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  AI #AIAgents #Cybersecurity #SoftwareEngineering #AIEngineering #Developers
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
