<?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: unity developers</title>
    <description>The latest articles on DEV Community by unity developers (@unity_developers_7bf3120f).</description>
    <link>https://dev.to/unity_developers_7bf3120f</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%2F2492187%2F9a45169c-ada0-4a10-9f61-6bd76c499279.png</url>
      <title>DEV Community: unity developers</title>
      <link>https://dev.to/unity_developers_7bf3120f</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/unity_developers_7bf3120f"/>
    <language>en</language>
    <item>
      <title>Building ExeGuard AI: How I Used Switch to Create a Collaborative AI Security Investigation Team</title>
      <dc:creator>unity developers</dc:creator>
      <pubDate>Sat, 07 Nov 2026 09:39:02 +0000</pubDate>
      <link>https://dev.to/unity_developers_7bf3120f/building-exeguard-ai-how-i-used-switch-to-create-a-collaborative-ai-security-investigation-team-42m4</link>
      <guid>https://dev.to/unity_developers_7bf3120f/building-exeguard-ai-how-i-used-switch-to-create-a-collaborative-ai-security-investigation-team-42m4</guid>
      <description>&lt;h1&gt;
  
  
  Building ExeGuard AI: How I Used Switch to Create a Collaborative AI Security Investigation Team
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;By Sayed Afaan, Solo Developer &amp;amp; Founder at Thynk Software Solutions&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Built for the Flip the Switch Hackathon 2026&lt;/em&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  The Dilemma of the Unknown &lt;code&gt;.exe&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Every Windows administrator, security engineer, and developer has faced this dilemma: you download an unfamiliar executable or receive a vendor payload, and you need to know before double-clicking: &lt;strong&gt;Is this file safe?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Today, that leaves you with two bad options:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Blind Trust in Antivirus Badges:&lt;/strong&gt; You upload a hash to a multi-engine scanner. If it says "Clean", you run it. But traditional detection engines are black boxes. They output a label without showing the underlying evidence, context, or arithmetic that led to that judgment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;False-Positive Noise Fatigue:&lt;/strong&gt; If you run basic static analysis tools, you are flooded with alarms. Common Windows APIs like &lt;code&gt;GetForegroundWindow&lt;/code&gt;, &lt;code&gt;OpenClipboard&lt;/code&gt;, or &lt;code&gt;IsDebuggerPresent&lt;/code&gt; get flagged as suspicious, even though virtually every legitimate GUI program and standard MSVC C runtime imports them.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When I set out to build &lt;strong&gt;ExeGuard AI&lt;/strong&gt; for the &lt;em&gt;Flip the Switch Hackathon 2026&lt;/em&gt;, my goal was simple: &lt;strong&gt;build a defensive static analysis system that shows its work, never executes submitted files, and places real AI agents and human analysts into an interactive room to investigate the binary together.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here is the story of how I engineered ExeGuard AI, how I used Switch to orchestrate an autonomous SOC investigation team, and the real development hurdles I solved along the way.&lt;/p&gt;


&lt;h2&gt;
  
  
  Technical Architecture &amp;amp; How ExeGuard AI Works
&lt;/h2&gt;

&lt;p&gt;ExeGuard AI is built around an auditable, offline-first, zero-execution architecture.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌────────────────────────────────────────────────────────────────────────┐
│                          ExeGuard AI Architecture                      │
└────────────────────────────────────────────────────────────────────────┘

 [React 18 + Vite] ──(REST API)──► [FastAPI Backend (Python 3.12)]
        │                                  │
        │                           [SQLite Database]
        │                       (Scans, Evidence, Reviews)
        │                                  │
        ▼                                  ▼
 [Executive SOC UI]            [7-Stage Static Engine]
 (Evidence Brief,              - File ID &amp;amp; Cryptographic Hashes
  Thread, Review)              - PE Structure &amp;amp; Shannon Entropy
        ▲                      - Authenticode via WinTrust / Crypt32
        │                      - Tiered String &amp;amp; Behavioral Regex
        │                      - YARA Rule Compilation
        │                      - Opt-in Hash Reputation Lookup
        │                      - Deterministic Arithmetic Scoring
        │                                  │
        │                          (Evidence Brief)
        │                                  ▼
  [Mattermost] ◄──(Bridge)──► [Switch Core Server (:52131)]
  (#exeguard-security-lab)                 │
        │                           [Agent Controller]
        │                                  │
        ▼                                  ▼
 ┌─────────────────────────────────────────────────────────────┐
 │                Collaborative Investigation                  │
 │                                                             │
 │  • @static-analysis-agent  (Binary Specialist)              │
 │  • @threat-intel-agent     (Reputation Researcher)          │
 │  • @security-review-agent  (Independent Auditor)            │
 │  • Human Analyst           (Final Decision Maker)           │
 └─────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The system operates across three core tiers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Frontend (React 18, Vite, Tailwind CSS):&lt;/strong&gt; A responsive interface featuring real-time analysis stages, Shannon entropy visualization, auditable score breakdowns, an executive investigation room, and ReportLab PDF report generation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analysis Backend (FastAPI, Python 3.12):&lt;/strong&gt; An offline-first static engine leveraging &lt;code&gt;pefile&lt;/code&gt;, &lt;code&gt;yara-python&lt;/code&gt;, &lt;code&gt;cryptography&lt;/code&gt;, and Windows &lt;code&gt;crypt32&lt;/code&gt;/&lt;code&gt;wintrust&lt;/code&gt; via &lt;code&gt;ctypes&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collaboration Stack (Switch &amp;amp; Mattermost):&lt;/strong&gt; A local Matrix-bridged communication layer where Switch connects autonomous AI agents directly into &lt;code&gt;#exeguard-security-lab&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  The Static Analysis Pipeline (Without Running Code)
&lt;/h2&gt;

&lt;p&gt;A core tenet of ExeGuard AI is its &lt;strong&gt;Zero-Execution Safety Guarantee&lt;/strong&gt;. Submitting an unknown binary never endangers the analyst's machine. During automated self-testing (&lt;code&gt;selftest.py&lt;/code&gt;), tripwires replace execution primitives (&lt;code&gt;subprocess.run&lt;/code&gt;, &lt;code&gt;Popen&lt;/code&gt;, &lt;code&gt;os.system&lt;/code&gt;, &lt;code&gt;os.startfile&lt;/code&gt;, &lt;code&gt;webbrowser.open&lt;/code&gt;) with raising exceptions to prove that no inspected binary is ever launched.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Figure 1: ExeGuard AI Static Analysis Results Dashboard&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;![ExeGuard AI Scan Results](screenshots/01-analysis-results.png)&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Caption: Inspection view showing cryptographic hashes, Authenticode certificate chain status, Shannon section entropy, and itemized scoring deductions.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The engine executes across seven transparent stages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;File Identification &amp;amp; Hashing:&lt;/strong&gt; Magic byte analysis walks the DOS stub and NT headers to extract genuine PE metadata, computing SHA-256, MD5, and SHA-1 hashes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PE Structure &amp;amp; Shannon Entropy:&lt;/strong&gt; Parses section permissions (&lt;code&gt;R-X&lt;/code&gt;, &lt;code&gt;RW-&lt;/code&gt;), entry points, and per-section Shannon entropy. High entropy in &lt;code&gt;.text&lt;/code&gt; (&amp;gt; 7.2) or overlays (&amp;gt; 7.5) highlights potential packing or encrypted payloads.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Stage Authenticode Verification:&lt;/strong&gt; Instead of treating digital signatures as a blunt boolean, ExeGuard answers three distinct questions:

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Is there a signature table on disk?&lt;/em&gt; (PE data directory 4).&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Who signed it?&lt;/em&gt; (Decodes embedded PKCS#7 structures with &lt;code&gt;cryptography&lt;/code&gt;, matching the signer by issuer and serial).&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Is the signer trusted?&lt;/em&gt; (Walks the certificate chain leaf-to-root and matches the root against the local Windows &lt;code&gt;ROOT&lt;/code&gt; store; catalog-signed Windows binaries are checked via &lt;code&gt;CryptCATAdmin*&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tiered Import &amp;amp; String Analysis:&lt;/strong&gt; APIs are split into &lt;strong&gt;ambient&lt;/strong&gt; (common GUI/runtime imports like &lt;code&gt;GetTickCount&lt;/code&gt;, weighted 0) and &lt;strong&gt;signature&lt;/strong&gt; (process injection, token duplication). Extracted strings are categorized into behavioral tiers (PowerShell obfuscation, sandbox evasion).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;YARA Pattern Matching:&lt;/strong&gt; Compiled rulesets inspect the binary against categorized rule files with offset locations and provenance tracking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Threat Intelligence:&lt;/strong&gt; If enabled, checks file reputation by SHA-256 hash lookup via VirusTotal v3. Binaries are never uploaded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic Risk Scoring:&lt;/strong&gt; The verdict is derived through arithmetic, not model hallucination:
$$\text{Score} = \text{clamp}\left(\sum \text{Severity Weights} - \sum \text{Mitigations}, 0, 100\right)$$
Scores map to four verdicts: &lt;code&gt;LOW RISK&lt;/code&gt; (&amp;lt; 20), &lt;code&gt;SUSPICIOUS&lt;/code&gt; (20–44), &lt;code&gt;HIGH RISK&lt;/code&gt; (≥ 45), or &lt;code&gt;INCONCLUSIVE&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Why I Chose Switch for Multi-Agent Collaboration
&lt;/h2&gt;

&lt;p&gt;Most "AI cybersecurity tools" use hardcoded single-prompt chains or simulated chat widgets. When you refresh the page, there are no real participants, no independent perspectives, and no auditable logs.&lt;/p&gt;

&lt;p&gt;I chose &lt;strong&gt;Switch&lt;/strong&gt; because it changes the paradigm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real Agents in Real Chat Infrastructure:&lt;/strong&gt; Switch orchestrates agents inside real chat protocols (Mattermost), backed by Matrix. Every post carries an authoritative post ID.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provider Agnostic:&lt;/strong&gt; Switch connects to the AI providers developers already use (Cursor, Claude Code, OpenCode, Codex, Antigravity) rather than forcing an expensive or proprietary runtime.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strict Role Boundaries:&lt;/strong&gt; Each agent operates under its own distinct prompt, tool privileges, and output contract.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Connecting the AI Agents via Switch Protocol
&lt;/h2&gt;

&lt;p&gt;To integrate ExeGuard with Switch, I registered our backend service with the Switch Core server (&lt;code&gt;http://127.0.0.1:52131&lt;/code&gt;) using Switch's Agent Protocol.&lt;/p&gt;

&lt;p&gt;In &lt;code&gt;backend/app/agents/switch_protocol.py&lt;/code&gt;, ExeGuard registers an identity using Switch's deployment token:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;exeguard-analyst&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;display_name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ExeGuard Analyst&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Posts static-analysis evidence briefs into the security room.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;connector_type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;other&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;integration_profile&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;connection_model&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;session_passive&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;message_exchange&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pre_invocation_mediation&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;post_invocation_mediation&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;event_reporting&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;overwrite&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;# Dispatched with Authorization: Bearer &amp;lt;AGENT_REGISTRATION_TOKEN&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When an analysis completes, the analyst clicks &lt;strong&gt;"Send Findings to Agents"&lt;/strong&gt;. ExeGuard formats a structured Markdown evidence brief and dispatches it through the Switch bridge into &lt;code&gt;#exeguard-security-lab&lt;/code&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Figure 2: Executive Security Evidence Brief in the Investigation Room&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;![ExeGuard Executive Evidence Brief](screenshots/02-executive-brief.png)&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Caption: The executive evidence card rendered in the ExeGuard SOC room, displaying verified SHA-256, deterministic score, PE metrics, and tiered indicators.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Three Implemented Agent Roles
&lt;/h2&gt;

&lt;p&gt;In &lt;code&gt;backend/app/agents/roster.py&lt;/code&gt;, I defined three specialized personas with strict boundaries:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent Role&lt;/th&gt;
&lt;th&gt;Responsibilities&lt;/th&gt;
&lt;th&gt;Strict Restrictions&lt;/th&gt;
&lt;th&gt;Output Contract&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;@static-analysis-agent&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Evaluates PE sections, Shannon entropy, imports, and behavioral strings.&lt;/td&gt;
&lt;td&gt;Forbidden from executing code or claiming detection without citing fields or offsets.&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;OBSERVED&lt;/code&gt;, &lt;code&gt;INFERRED&lt;/code&gt;, &lt;code&gt;UNKNOWABLE&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;@threat-intel-agent&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Assesses hash reputation, YARA rule provenance, and external intelligence gaps.&lt;/td&gt;
&lt;td&gt;Forbidden from uploading binaries or visiting extracted URLs.&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;SOURCES CONSULTED&lt;/code&gt;, &lt;code&gt;WHAT THEY SUPPORT&lt;/code&gt;, &lt;code&gt;WHAT THEY CANNOT SUPPORT&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;@security-review-agent&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Independent reviewer auditing the other two agents for contradictions and false alarms.&lt;/td&gt;
&lt;td&gt;Forbidden from inventing claims; must separate observed facts from hypotheses.&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;AGREEMENTS&lt;/code&gt;, &lt;code&gt;CONTRADICTIONS&lt;/code&gt;, &lt;code&gt;FALSE-POSITIVE RISK&lt;/code&gt;, &lt;code&gt;RECOMMENDATION&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Real Agent Debate in Action
&lt;/h3&gt;

&lt;p&gt;During testing with an unsigned sample (&lt;code&gt;gcapi.dll&lt;/code&gt;), the agents engaged in real, nuanced analysis in Mattermost:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;@static-analysis-agent&lt;/code&gt;:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;"OBSERVED: PE32 i386, 7 sections, .text entropy 6.69. Imports include &lt;code&gt;DuplicateTokenEx&lt;/code&gt;, &lt;code&gt;ImpersonateLoggedOnUser&lt;/code&gt;, &lt;code&gt;OpenProcessToken&lt;/code&gt;. No Authenticode signature.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;INFERRED: Token duplication plus impersonation is a genuine privilege escalation capability. Legitimate in callers/services, but also the core of token theft tooling.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;UNKNOWABLE: True runtime intent without dynamic observation."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;@threat-intel-agent&lt;/code&gt;:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;"SOURCES CONSULTED: Local brief metadata only. Hash lookup was not opted in.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;WHAT THEY SUPPORT: Unsigned binary; no known catalogue match. Most DLLs in the wild are unsigned.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;WHAT THEY CANNOT SUPPORT: No claim that this file is malicious, and none that it is clean. The correct position is unassessed, not suspicious."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Figure 3: Multi-Agent Collaborative Thread in Mattermost&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;![Mattermost Multi-Agent Conversation](screenshots/03-mattermost-thread.png)&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Caption: Real autonomous responses from @static-analysis-agent and @threat-intel-agent inside the bridged Mattermost channel.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Human-in-the-Loop: The Analyst Holds the Pen
&lt;/h2&gt;

&lt;p&gt;A core architectural rule of ExeGuard AI is: &lt;strong&gt;AI agents propose and interrogate; the human analyst decides.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Direct Room Interrogation:&lt;/strong&gt; Analysts can challenge any agent directly using the bottom composer in the Investigation Room (e.g., &lt;em&gt;"Why is that section entropy suspicious, and what else could explain it?"&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit Sign-Off:&lt;/strong&gt; Once satisfied, the analyst records a formal review:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Decision:&lt;/strong&gt; &lt;code&gt;Approved&lt;/code&gt;, &lt;code&gt;Rejected&lt;/code&gt;, or &lt;code&gt;Needs More Analysis&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verdict Override:&lt;/strong&gt; The analyst can confirm or override the mathematical verdict with signed reasoning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tamper-Proof Audit Trail:&lt;/strong&gt; The entire conversation trail, with real Mattermost post IDs, timestamps, and analyst sign-off, is exported into a formal ReportLab PDF report.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Figure 4: Human Analyst Sign-Off and Formal Review Drawer&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;![Analyst Review Sign-off](screenshots/04-analyst-signoff.png)&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Caption: Human analyst recording a formal sign-off with verdict override capability and commentary.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Real Development Challenges &amp;amp; Lessons Learned
&lt;/h2&gt;

&lt;p&gt;Building an end-to-end multi-agent security analyzer in a hackathon sprint presented concrete engineering obstacles:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Reverse-Engineering Switch Protocol &amp;amp; Auth Headers
&lt;/h3&gt;

&lt;p&gt;Connecting ExeGuard to Switch initially returned HTTP 401 and 422 errors. By inspecting the Switch Core server's route handlers (&lt;code&gt;switch_core/bridges/agent/api/handlers.py&lt;/code&gt;), I discovered two critical requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Registration tokens must be passed as &lt;code&gt;Authorization: Bearer &amp;lt;token&amp;gt;&lt;/code&gt; in HTTP headers, not in the JSON body.&lt;/li&gt;
&lt;li&gt;The registration endpoint strictly requires an &lt;code&gt;integration_profile&lt;/code&gt; object (&lt;code&gt;session_passive&lt;/code&gt;) and a &lt;code&gt;connector_type&lt;/code&gt;. Implementing this in &lt;code&gt;register_agent.py&lt;/code&gt; enabled seamless automated onboarding.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Addressing Policies &amp;amp; Bot Identities
&lt;/h3&gt;

&lt;p&gt;Once connected, our first briefs were met with:&lt;br&gt;&lt;br&gt;
&lt;code&gt;"I only take instructions from my owner, and this chat account isn't linked to a Switch user yet..."&lt;/code&gt;&lt;br&gt;&lt;br&gt;
Switch agents default to an owner-only access policy. To enable collaboration with the ExeGuard bot, each agent's addressing policy in Switch Console was updated to &lt;strong&gt;"Anyone"&lt;/strong&gt;, allowing open communication across all room participants.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Windows Softpub WinVerifyTrust Quirks
&lt;/h3&gt;

&lt;p&gt;On certain Windows 11 environments, &lt;code&gt;WinVerifyTrust&lt;/code&gt; returns &lt;code&gt;TRUST_E_PROVIDER_UNKNOWN (0x800B0001)&lt;/code&gt; because the softpub provider registration is absent in the registry. Instead of failing silently or marking binaries unsigned, I engineered a direct PKCS#7 certificate walker using &lt;code&gt;crypt32&lt;/code&gt; and &lt;code&gt;cryptography&lt;/code&gt;. It decodes the signer directly and matches the root certificate against the local machine's &lt;code&gt;ROOT&lt;/code&gt; store.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Designing the Executive SOC Room UI
&lt;/h3&gt;

&lt;p&gt;Initial versions rendered the 5,000-character evidence brief as an unformatted raw markdown blob with an overpowering bright blue background. I redesigned &lt;code&gt;Room.jsx&lt;/code&gt; to parse markdown sections into clean cards:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Executive Evidence cards with one-click SHA-256 copying.&lt;/li&gt;
&lt;li&gt;Dedicated agent bubbles with role-specific icons (&lt;code&gt;Code2&lt;/code&gt;, &lt;code&gt;Globe&lt;/code&gt;, &lt;code&gt;ShieldCheck&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Quiet, centered pill badges for system join events and tool call counters.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Security Limitations &amp;amp; Future Roadmap
&lt;/h2&gt;

&lt;p&gt;To remain honest, ExeGuard acknowledges what static analysis cannot do:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Packed &amp;amp; Encrypted Binaries:&lt;/strong&gt; Packers obscure executable intent. ExeGuard flags high entropy and packing signatures, but it does not unpack code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trusted Publisher Ceiling:&lt;/strong&gt; A machine-trusted signature caps static findings at &lt;code&gt;SUSPICIOUS&lt;/code&gt;. Stolen signing certificates do occur; a good signature cannot grant total immunity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Future Vision (Isolated Dynamic Sandboxing):&lt;/strong&gt; In future releases, I plan to integrate an optional, air-gapped micro-VM sandbox (using Firecracker or Hyper-V) that runs the binary in an isolated container to record network telemetry, child processes, and memory dumps, feeding dynamic artifacts directly back to the Switch agent team.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusion &amp;amp; Demo Links
&lt;/h2&gt;

&lt;p&gt;Building ExeGuard AI proved to me that collaborative AI is profoundly more effective than single-agent prompts. By using Switch to connect autonomous specialists into a shared chat room, security analysts gain an auditable, transparent, and multi-perspective investigation partner.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/sayedafaan/exeguard" rel="noopener noreferrer"&gt;https://github.com/sayedafaan/exeguard&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Video Demonstration:&lt;/strong&gt; &lt;code&gt;https://youtu.be/ZfXYGds7UZA&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hackathon:&lt;/strong&gt; Flip the Switch Hackathon 2026&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;If you are exploring multi-agent workflows or defensive application security, I'd love to connect on GitHub or in the comments below!&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%2F69rk10g2enlnn0b20qoo.png" 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%2F69rk10g2enlnn0b20qoo.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>switch</category>
    </item>
  </channel>
</rss>
