<?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: manoj1698</title>
    <description>The latest articles on DEV Community by manoj1698 (@manoj1698).</description>
    <link>https://dev.to/manoj1698</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%2F4232568%2F8a881a00-d657-49dd-9e33-71c24fa71864.jpg</url>
      <title>DEV Community: manoj1698</title>
      <link>https://dev.to/manoj1698</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/manoj1698"/>
    <language>en</language>
    <item>
      <title>Night shift without the night: AI agents that keep a SOC's watch, built on Switch</title>
      <dc:creator>manoj1698</dc:creator>
      <pubDate>Sat, 07 Nov 2026 17:49:32 +0000</pubDate>
      <link>https://dev.to/manoj1698/night-shift-without-the-night-ai-agents-that-keep-a-socs-watch-built-on-switch-go</link>
      <guid>https://dev.to/manoj1698/night-shift-without-the-night-ai-agents-that-keep-a-socs-watch-built-on-switch-go</guid>
      <description>&lt;p&gt;Built for Flip the Switch (WeMakeDevs, DevTools Academy, Switch AI), Track 01: Best Business Workflow. Code: github.com/manoj1698/soc-shift-relay.&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/E7hAyypxt24" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;The problem: the handover&lt;br&gt;
Security operations teams work in shifts, and two things go wrong every night. At 2 AM an alert waits for a person who is asleep, or it wakes someone up for a scan the team approved last week. At 9 AM the next analyst opens a wall of alerts with no idea which three matter. Context is lost at every handover.&lt;/p&gt;

&lt;p&gt;I wanted agents that behave like shift colleagues, not a chatbot: they keep watch, fix the safe things, ask a person before anything risky, and tell the next shift exactly where to start.&lt;/p&gt;

&lt;p&gt;The idea: five agents, one room&lt;br&gt;
SOC Shift Relay puts five Claude Code agents into the team's Discord through Switch:&lt;/p&gt;

&lt;p&gt;@triage checks every alert against the runbook, closes known false positives, and answers employees who report problems in #security-help.&lt;br&gt;
&lt;a class="mentioned-user" href="https://dev.to/responder"&gt;@responder&lt;/a&gt; is the only agent that can change anything: block an IP, disable an account, isolate a host. It proposes first, and the action runs only after the on-call analyst taps Allow once in chat.&lt;br&gt;
@scribe keeps the shift log and the on-call roster, briefs the next analyst, and writes a shift or incident report on request.&lt;br&gt;
&lt;a class="mentioned-user" href="https://dev.to/appsec"&gt;@appsec&lt;/a&gt; scans every code push: leaked secrets, risky code, vulnerable dependencies, malware patterns. It flags the push, hands attacker addresses to &lt;a class="mentioned-user" href="https://dev.to/responder"&gt;@responder&lt;/a&gt;, and writes a fix that it re-scans clean. It never merges.&lt;br&gt;
A SIEM agent replays a night of sample alerts and a code push.&lt;br&gt;
The safety design: a runbook with three tiers&lt;br&gt;
The runbook is a room document every agent reads, and its tiers decide everything:&lt;/p&gt;

&lt;p&gt;Tier 0, agents alone: lookups, closing known noise, safety steps for an employee, scanning a push, preparing a fix as a proposed change, writing the logs.&lt;br&gt;
Tier 1, on-call approves: block or unblock an IP, disable or re-enable an account, isolate or release a host.&lt;br&gt;
Tier 2, people only: delete data, touch protected targets, merge code, rotate a leaked key.&lt;br&gt;
A brief that says "wait for approval" is only a request. So every rule is also held by something outside the prompt. &lt;a class="mentioned-user" href="https://dev.to/responder"&gt;@responder&lt;/a&gt; runs with Auto mode off, and its Claude Code settings mark every action script ask, so the script cannot start until Switch's approval request is answered. The scripts refuse protected targets even when approved. Deny rules block edits to the lab state and all network tools. &lt;a class="mentioned-user" href="https://dev.to/appsec"&gt;@appsec&lt;/a&gt; cannot write, run or install the code it scans. Every action writes a JSON line to an audit log, and the reports quote that log, so a report cannot invent an approval.&lt;/p&gt;

&lt;p&gt;Building it on Switch&lt;br&gt;
Switch is what turns five chatbots into a team:&lt;/p&gt;

&lt;p&gt;Roles (jobs). People address the job, @scribe, not the agent. If an agent goes offline, another can take the job, which is the shift idea applied to agents. triage is shared; responder, scribe and appsec are exclusive, so there is never a second agent acting in parallel.&lt;br&gt;
Approvals in chat. The approval request shows the exact command. On-call answers Allow once or Decline, and Switch records who answered.&lt;br&gt;
Room documents as memory. Only the agent that created a document can change it, so the shift log has exactly one author. The roster lives there too: tell @scribe "Asha is on leave until Monday, Spider covers her" and her follow-ups go to Spider. Absence never counts as approval.&lt;br&gt;
Who can talk to an agent. Employees can reach @triage, never &lt;a class="mentioned-user" href="https://dev.to/responder"&gt;@responder&lt;/a&gt;. When my second account told the responder to disable a user, Switch refused it in the channel.&lt;br&gt;
Linked rooms. #security-help escalates to #soc-shift.&lt;br&gt;
A template. One YAML file recreates all five agents, both rooms, the link, the roles, the runbook and the kickoff. A judge imports it and gets the same room I recorded.&lt;br&gt;
The code push at 02:40&lt;br&gt;
The new part I am proudest of: at 02:40 a contractor account pushes a "hotfix" to payments-api. &lt;a class="mentioned-user" href="https://dev.to/appsec"&gt;@appsec&lt;/a&gt; scans only the lines the push adds and returns BLOCK with five findings:&lt;/p&gt;

&lt;p&gt;a curl | sh from an unknown host in the deploy script&lt;br&gt;
a live payment API key, redacted in every output&lt;br&gt;
an f-string SQL query&lt;br&gt;
PyYAML 5.3 and requests 2.19.1, with five public CVEs between them&lt;br&gt;
&lt;a class="mentioned-user" href="https://dev.to/responder"&gt;@responder&lt;/a&gt; blocks the host after Allow once. &lt;a class="mentioned-user" href="https://dev.to/appsec"&gt;@appsec&lt;/a&gt; writes the fix as a proposed change that keeps the payment retries, re-scans it to PASS, and leaves merging and key rotation to people. The scanner is standard library and offline, with rules modelled on Gitleaks, Semgrep, OSV-Scanner and YARA, so the demo runs on any machine.&lt;/p&gt;

&lt;p&gt;What went wrong, and what I learned&lt;br&gt;
Windows is early access. Switch Console on Windows could not fill a provider field in a template, so the template pins Claude Code for every agent. That is the honest choice anyway: the guardrails are Claude Code settings.&lt;br&gt;
Trust changes everything. Claude Code ignores a folder's allow rules until the folder is trusted, and Switch starts agents without the trust dialog. Every harmless status check asked on-call for approval, until I added a --trust step to the setup script.&lt;br&gt;
Agents doubt what they cannot see. The responder never sees the approval itself, so in one rehearsal it called an approved block "unconfirmed", and the morning brief was wrong. One sentence in its brief fixed it: if your command ran, on-call approved it.&lt;br&gt;
Exact commands matter. cd folder &amp;amp;&amp;amp; python actions/status.py did not match the allow rule for python actions/status.py. The briefs now say to run commands exactly as written.&lt;br&gt;
Agents only hear @. A message that does not address an agent never reaches it, which is why the shift change is "@scribe end of shift" and why the employee room has triage as its main agent.&lt;br&gt;
Run it yourself&lt;br&gt;
Clone the repo, follow the setup guide (Windows and Discord, about an hour the first time), import the template, run python tools/reset_demo.py, and type @soc-siem start night shift.&lt;/p&gt;

&lt;p&gt;Beyond security&lt;br&gt;
Only the runbook and the lab are security-specific. Swap them and the same room serves an IT helpdesk, a customer-support shift or a network operations team: triage, an approval-gated responder, a scribe that briefs whoever starts the next shift, and an agent that checks every change before it ships.&lt;/p&gt;

&lt;h1&gt;
  
  
  HowISwitch
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>opensource</category>
      <category>hackathon</category>
    </item>
  </channel>
</rss>
