<?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: AgentWarden</title>
    <description>The latest articles on DEV Community by AgentWarden (@agentwarden).</description>
    <link>https://dev.to/agentwarden</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%2F4128102%2Ff7b0429d-0e76-4df0-9b3a-ccb9455a9c21.png</url>
      <title>DEV Community: AgentWarden</title>
      <link>https://dev.to/agentwarden</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/agentwarden"/>
    <language>en</language>
    <item>
      <title>Agent Skills and MCP Configs Need a Security Gate</title>
      <dc:creator>AgentWarden</dc:creator>
      <pubDate>Sat, 19 Sep 2026 15:52:04 +0000</pubDate>
      <link>https://dev.to/agentwarden/agent-skills-and-mcp-configs-need-a-security-gate-cdf</link>
      <guid>https://dev.to/agentwarden/agent-skills-and-mcp-configs-need-a-security-gate-cdf</guid>
      <description>&lt;p&gt;AI agents are gaining access to real capabilities: reading files, running&lt;br&gt;
commands, calling APIs, connecting to MCP servers, and combining those tools&lt;br&gt;
under natural-language instructions.&lt;/p&gt;

&lt;p&gt;At the same time, Agent Skills are still installed like documentation. In many&lt;br&gt;
projects, a skill is a Markdown file copied into a directory or referenced by a&lt;br&gt;
URL. That file can also contain executable scripts, credential access patterns,&lt;br&gt;
network requests, and instructions designed to override the agent.&lt;/p&gt;

&lt;p&gt;Skills and MCP configurations are becoming dependencies, but they often do not&lt;br&gt;
get the basic protections we expect from dependencies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no lockfile recording exactly what was installed;&lt;/li&gt;
&lt;li&gt;no stable content digest for detecting later changes;&lt;/li&gt;
&lt;li&gt;no verification of the publisher;&lt;/li&gt;
&lt;li&gt;no CI gate to stop a high-risk configuration before merge.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AgentWarden is a static security gate for those assets. It is not a sandbox and&lt;br&gt;
does not promise that an agent is safe at runtime. It scans, locks, and verifies&lt;br&gt;
Agent Skills, tools, and MCP configurations before they reach an agent.&lt;/p&gt;
&lt;h2&gt;
  
  
  Reproduce the problem in one minute
&lt;/h2&gt;

&lt;p&gt;AgentWarden requires Node.js 22.6 or later and has zero runtime dependencies.&lt;br&gt;
You can run the published CLI without installing it globally:&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="nb"&gt;mkdir &lt;/span&gt;agentwarden-demo
&lt;span class="nb"&gt;cd &lt;/span&gt;agentwarden-demo

curl &lt;span class="nt"&gt;-fsSLO&lt;/span&gt; https://raw.githubusercontent.com/juangh123/AgentWarden/v0.3.2/examples/safe-skill.md
npx &lt;span class="nt"&gt;--yes&lt;/span&gt; agentwarden-cli@0.3.2 scan safe-skill.md

curl &lt;span class="nt"&gt;-fsSLO&lt;/span&gt; https://raw.githubusercontent.com/juangh123/AgentWarden/v0.3.2/examples/malicious-skill.md
npx &lt;span class="nt"&gt;--yes&lt;/span&gt; agentwarden-cli@0.3.2 scan malicious-skill.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The safe sample exits with code &lt;code&gt;0&lt;/code&gt;. The intentionally unsafe sample matches&lt;br&gt;
credential, command, prompt-injection, or data-exfiltration rules and exits with&lt;br&gt;
code &lt;code&gt;1&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The exit code matters because it turns the same check into a CI gate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;0&lt;/code&gt;: scan passed;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;1&lt;/code&gt;: risk found, integrity mismatch, or policy failure;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;2&lt;/code&gt;: invalid command, path, or configuration.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  What it scans
&lt;/h2&gt;

&lt;p&gt;The current rules cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;credential and secret exposure, including sensitive local paths, privileged
environment variables, API tokens, and embedded private keys;&lt;/li&gt;
&lt;li&gt;dangerous commands, including destructive operations, download-and-execute
patterns, &lt;code&gt;eval&lt;/code&gt;, and encoded execution chains;&lt;/li&gt;
&lt;li&gt;prompt injection and jailbreak patterns;&lt;/li&gt;
&lt;li&gt;data exfiltration and reverse-connection attempts;&lt;/li&gt;
&lt;li&gt;risky MCP configurations, including raw shell execution, unpinned server
packages, and plaintext secrets in &lt;code&gt;env&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;supply-chain patterns such as executing a remote script without a digest or
using a lookalike download domain.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Directory scans discover Markdown skills and common MCP configuration formats.&lt;br&gt;
You can narrow the scope with include and exclude globs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx &lt;span class="nt"&gt;--yes&lt;/span&gt; agentwarden-cli@0.3.2 scan &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--profile&lt;/span&gt; strict &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--include&lt;/span&gt; &lt;span class="s2"&gt;"skills/**"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--exclude&lt;/span&gt; &lt;span class="s2"&gt;"skills/vendor/**"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reports are redacted by default so a security scan does not leak the credentials&lt;br&gt;
it was looking for.&lt;/p&gt;
&lt;h2&gt;
  
  
  Lock the reviewed bytes
&lt;/h2&gt;

&lt;p&gt;A one-time scan only tells you that the current content did not match a rule. It&lt;br&gt;
does not prove that the file stayed unchanged.&lt;/p&gt;

&lt;p&gt;AgentWarden stores reviewed skills in &lt;code&gt;skills.lock&lt;/code&gt;, including the SHA-256&lt;br&gt;
digest, package manifest, remote source, and publisher provenance. It is similar&lt;br&gt;
in spirit to a package lockfile:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx &lt;span class="nt"&gt;--yes&lt;/span&gt; agentwarden-cli@0.3.2 &lt;span class="nb"&gt;install&lt;/span&gt; ./skills/weather.md
npx &lt;span class="nt"&gt;--yes&lt;/span&gt; agentwarden-cli@0.3.2 verify .agentwarden/skills/weather.md
npx &lt;span class="nt"&gt;--yes&lt;/span&gt; agentwarden-cli@0.3.2 audit
npx &lt;span class="nt"&gt;--yes&lt;/span&gt; agentwarden-cli@0.3.2 sbom &lt;span class="nt"&gt;--output&lt;/span&gt; agentwarden.cdx.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;verify&lt;/code&gt; checks the installed content against the lockfile. &lt;code&gt;audit&lt;/code&gt; checks&lt;br&gt;
integrity and applies the current security policy. &lt;code&gt;sbom&lt;/code&gt; exports the lockfile as&lt;br&gt;
a CycloneDX 1.5 document.&lt;/p&gt;

&lt;p&gt;Remote installation requires a publisher-provided SHA-256:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx &lt;span class="nt"&gt;--yes&lt;/span&gt; agentwarden-cli@0.3.2 &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  https://publisher.example/skills/weather.md &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--sha256&lt;/span&gt; &amp;lt;64-char-sha256&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the digest does not match, or the downloaded content fails policy, the&lt;br&gt;
command exits non-zero and does not silently record the artifact.&lt;/p&gt;

&lt;p&gt;For publisher provenance, the CLI also supports a detached Ed25519 signature:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx &lt;span class="nt"&gt;--yes&lt;/span&gt; agentwarden-cli@0.3.2 &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  https://publisher.example/skills/weather.md &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--sha256&lt;/span&gt; &amp;lt;64-char-sha256&amp;gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--signature&lt;/span&gt; https://publisher.example/skills/weather.md.sig &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--public-key&lt;/span&gt; ./trusted-publisher.pem
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;SHA-256 answers whether the bytes changed. An Ed25519 signature answers who&lt;br&gt;
published them. They solve different problems.&lt;/p&gt;
&lt;h2&gt;
  
  
  Put the gate in CI
&lt;/h2&gt;

&lt;p&gt;To generate a policy file and a GitHub Actions workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx &lt;span class="nt"&gt;--yes&lt;/span&gt; agentwarden-cli@0.3.2 init &lt;span class="nt"&gt;--profile&lt;/span&gt; strict
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Action is also available from GitHub Marketplace:&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="na"&gt;security-events&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;write&lt;/span&gt;

&lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v7&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;juangh123/AgentWarden@v0.3.2&lt;/span&gt;
    &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;skills/&lt;/span&gt;
      &lt;span class="na"&gt;profile&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;strict&lt;/span&gt;
      &lt;span class="na"&gt;config&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;.agentwarden/policy.json&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It emits SARIF for GitHub Code Scanning. Larger repositories can use changed-file&lt;br&gt;
scans for pull requests. Existing findings can be accepted through a fingerprint&lt;br&gt;
baseline with an owner and an expiration date, so temporary exceptions do not&lt;br&gt;
become permanent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits matter
&lt;/h2&gt;

&lt;p&gt;AgentWarden is a static gate, not a sandbox, antivirus product, or runtime policy&lt;br&gt;
engine.&lt;/p&gt;

&lt;p&gt;It can miss new attack patterns. It can produce false positives. Static rules do&lt;br&gt;
not replace least privilege, isolation, network controls, code review, and human&lt;br&gt;
judgment.&lt;/p&gt;

&lt;p&gt;The most useful feedback is reproducible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MCP configuration formats that are not discovered or parsed correctly;&lt;/li&gt;
&lt;li&gt;realistic false positives;&lt;/li&gt;
&lt;li&gt;rule bypasses;&lt;/li&gt;
&lt;li&gt;CI workflow integration gaps;&lt;/li&gt;
&lt;li&gt;installation or cross-platform problems.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/juangh123/AgentWarden" rel="noopener noreferrer"&gt;https://github.com/juangh123/AgentWarden&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm: &lt;a href="https://www.npmjs.com/package/agentwarden-cli" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/agentwarden-cli&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub Marketplace:
&lt;a href="https://github.com/marketplace/actions/agentwarden-security-gate" rel="noopener noreferrer"&gt;https://github.com/marketplace/actions/agentwarden-security-gate&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Discussions:
&lt;a href="https://github.com/juangh123/AgentWarden/discussions" rel="noopener noreferrer"&gt;https://github.com/juangh123/AgentWarden/discussions&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you maintain Agent Skills, MCP servers, or an internal agent toolchain, I am&lt;br&gt;
more interested in your current install and review workflow than in a star.&lt;br&gt;
Concrete workflow gaps are what should shape the next release.&lt;/p&gt;

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