<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>ZodOps</title>
    <link>https://zodops.io/</link>
    <description>Engineering notes on the systems that keep data safe. Long-form, implementation-level writing on agent security, cloud security, data security, and security automation.</description>
    <language>en-us</language>
    <lastBuildDate>Thu, 29 Oct 2026 00:00:00 GMT</lastBuildDate>
    <atom:link href="https://zodops.io/rss.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>The Log Sees the Token, Not the Hand</title>
      <link>https://zodops.io/anatomy/the-log-sees-the-token/</link>
      <guid isPermaLink="true">https://zodops.io/anatomy/the-log-sees-the-token/</guid>
      <pubDate>Thu, 29 Oct 2026 00:00:00 GMT</pubDate>
      <category>MCP</category>
      <description>At 2 a.m., the team&apos;s agent opened a public pull request full of private code.
GitHub says Dana opened it. Dana was asleep.</description>
    </item>
    <item>
      <title>Encrypted. Still Readable.</title>
      <link>https://zodops.io/cases/encrypted-still-readable/</link>
      <guid isPermaLink="true">https://zodops.io/cases/encrypted-still-readable/</guid>
      <pubDate>Sat, 24 Oct 2026 00:00:00 GMT</pubDate>
      <category>Data Security</category>
      <description>The warehouse was encrypted. Every analyst could still read every Social Security number. This is how a hospital stopped moving real patient identifiers into places that only needed to join on them.</description>
    </item>
    <item>
      <title>Guardrail, Not Roadblock.</title>
      <link>https://zodops.io/articles/rollout-playbook-without-stalling-engineering/</link>
      <guid isPermaLink="true">https://zodops.io/articles/rollout-playbook-without-stalling-engineering/</guid>
      <pubDate>Tue, 13 Oct 2026 00:00:00 GMT</pubDate>
      <category>Field Notes</category>
      <description>Getting a security tool adopted without becoming the thing that stalls the sprint.</description>
    </item>
    <item>
      <title>The Alert Is Attacker-Controlled</title>
      <link>https://zodops.io/articles/llm-triage-alert-is-attacker-controlled/</link>
      <guid isPermaLink="true">https://zodops.io/articles/llm-triage-alert-is-attacker-controlled/</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>Security Automation</category>
      <description>Adding an LLM to your triage workflow means the attacker gets a vote.</description>
    </item>
    <item>
      <title>The Org Can Assume Prod</title>
      <link>https://zodops.io/anatomy/github-oidc-org-can-assume-prod/</link>
      <guid isPermaLink="true">https://zodops.io/anatomy/github-oidc-org-can-assume-prod/</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <category>CI</category>
      <description>You took the access key out of the pipeline. The trust policy still says any repo in the org can become the prod role. That is the same grant with a nicer name.</description>
    </item>
    <item>
      <title>Sites.Read.All Is the Index</title>
      <link>https://zodops.io/anatomy/sites-read-all-is-the-index/</link>
      <guid isPermaLink="true">https://zodops.io/anatomy/sites-read-all-is-the-index/</guid>
      <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
      <category>MCP</category>
      <description>You connected the agent to SharePoint. You did not review the Graph permission the app was granted. Application Sites.Read.All is a tenant crawl, not a search box.</description>
    </item>
    <item>
      <title>The Owners Who Were Not People</title>
      <link>https://zodops.io/cases/the-owners-who-were-not-people/</link>
      <guid isPermaLink="true">https://zodops.io/cases/the-owners-who-were-not-people/</guid>
      <pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate>
      <category>Cloud Security</category>
      <description>A tenant-wide inventory of standing Owner and User Access Administrator found four assignments on one subscription. Three of them were not people. PIM could cover the human. It could not cover the pipeline, the vendor identity, or the Global Administrator setting left on from a cleanup.</description>
    </item>
    <item>
      <title>The Key in the Env Block</title>
      <link>https://zodops.io/anatomy/mcp-service-account-in-env/</link>
      <guid isPermaLink="true">https://zodops.io/anatomy/mcp-service-account-in-env/</guid>
      <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
      <category>MCP</category>
      <description>You reviewed the system prompt. You did not review the access key the MCP server loads on start. That key is the permission grant.</description>
    </item>
    <item>
      <title>No Last Day</title>
      <link>https://zodops.io/articles/no-last-day/</link>
      <guid isPermaLink="true">https://zodops.io/articles/no-last-day/</guid>
      <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
      <category>Agent Security</category>
      <description>Every employee who leaves gets an offboarding. The agent your team stood up in March never will. Protection that depends on where data sits can&apos;t keep up with something whose job is to move it.</description>
    </item>
    <item>
      <title>The Package Doesn&apos;t Exist Yet</title>
      <link>https://zodops.io/articles/the-package-doesnt-exist-yet/</link>
      <guid isPermaLink="true">https://zodops.io/articles/the-package-doesnt-exist-yet/</guid>
      <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
      <category>Field Notes</category>
      <description>Coding assistants invent software names. Attackers can claim them first. The fix is a policy and architecture decision, not a coding one.</description>
    </item>
    <item>
      <title>Assume Your Agent Is Fooled</title>
      <link>https://zodops.io/articles/mcp-tool-permissions-and-prompt-injection/</link>
      <guid isPermaLink="true">https://zodops.io/articles/mcp-tool-permissions-and-prompt-injection/</guid>
      <pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate>
      <category>Agent Security</category>
      <description>Prompt injection matters because of what the agent is allowed to do next. Tool permissions, output channels, and agent identity are where that gets decided — or doesn&apos;t.</description>
    </item>
    <item>
      <title>Owner Means Root</title>
      <link>https://zodops.io/articles/azure-owner-means-root/</link>
      <guid isPermaLink="true">https://zodops.io/articles/azure-owner-means-root/</guid>
      <pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate>
      <category>Cloud Security</category>
      <description>Owner and User Access Administrator are root for everything beneath them, and Global Administrator is one setting from both. The fix is removing standing access: PIM for people, tighter controls for the identities PIM can&apos;t cover.</description>
    </item>
    <item>
      <title>The Deny Still Held</title>
      <link>https://zodops.io/cases/the-deny-still-held/</link>
      <guid isPermaLink="true">https://zodops.io/cases/the-deny-still-held/</guid>
      <pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate>
      <category>Cloud Security</category>
      <description>A weekend AdministratorAccess grant outlived the migration. The SCP kept the role from leaving the org or turning off CloudTrail. It couldn&apos;t stop a bucket policy from trusting an account we didn&apos;t own. I treated the deny as the ceiling, then added resource control policies for the data path.</description>
    </item>
    <item>
      <title>The Deny Is the Perimeter</title>
      <link>https://zodops.io/articles/scp-deny-is-the-perimeter/</link>
      <guid isPermaLink="true">https://zodops.io/articles/scp-deny-is-the-perimeter/</guid>
      <pubDate>Tue, 21 Apr 2026 00:00:00 GMT</pubDate>
      <category>Cloud Security</category>
      <description>SCPs set the ceiling that still holds when an IAM policy is wrong. Paired with resource control policies, they&apos;re how you draw a real boundary around your data.</description>
    </item>
    <item>
      <title>Memory Is a Data Store</title>
      <link>https://zodops.io/articles/ai-agent-memory-governance/</link>
      <guid isPermaLink="true">https://zodops.io/articles/ai-agent-memory-governance/</guid>
      <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
      <category>Agent Security</category>
      <description>When an agent remembers what matters to you, it can also remember what an attacker told it. Persistent memory needs the same governance as any other place sensitive data lives.</description>
    </item>
    <item>
      <title>Finding Shadow Assistants Before They Found Us</title>
      <link>https://zodops.io/cases/finding-shadow-ai/</link>
      <guid isPermaLink="true">https://zodops.io/cases/finding-shadow-ai/</guid>
      <pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate>
      <category>Data Security</category>
      <description>Employees were sending sensitive data, including AWS secret keys, to assistants nobody had approved. I paired DSPM with endpoint and inline DLP to find it, then rebuilt policy around corporate versus personal assistant instances, cutting false positives by about two-thirds.</description>
    </item>
    <item>
      <title>The Paste Is the Leak</title>
      <link>https://zodops.io/articles/dspm-dlp-shadow-ai-leaks/</link>
      <guid isPermaLink="true">https://zodops.io/articles/dspm-dlp-shadow-ai-leaks/</guid>
      <pubDate>Tue, 17 Mar 2026 00:00:00 GMT</pubDate>
      <category>Data Security</category>
      <description>Running DSPM and DLP to hunt for shadow assistants taught me two things: the leaks are bigger than you expect, and much of the noise comes from the assistants you already approved.</description>
    </item>
    <item>
      <title>Find It Before You Label It</title>
      <link>https://zodops.io/articles/data-security-shadow-data-inventory/</link>
      <guid isPermaLink="true">https://zodops.io/articles/data-security-shadow-data-inventory/</guid>
      <pubDate>Sun, 22 Feb 2026 00:00:00 GMT</pubDate>
      <category>Data Security</category>
      <description>Shadow data isn&apos;t a tooling gap. It&apos;s an inventory gap.</description>
    </item>
    <item>
      <title>Who Gets to Say Yes</title>
      <link>https://zodops.io/articles/security-automation-without-babysitting/</link>
      <guid isPermaLink="true">https://zodops.io/articles/security-automation-without-babysitting/</guid>
      <pubDate>Sun, 11 Jan 2026 00:00:00 GMT</pubDate>
      <category>Security Automation</category>
      <description>Security automation that doesn&apos;t become another thing to babysit.</description>
    </item>
  </channel>
</rss>
