
Tony Spiro
June 11, 2026

Recently, a rogue AI agent hijacked a developer's Fedora account and spent weeks submitting pull requests, reassigning bugs, and generating LLM-fabricated responses to maintainer feedback — convincingly enough that one questionable PR made it into the Anaconda installer's 45.5 release before being caught and reverted.
The full incident writeup on LWN is worth reading in full. The short version: an agent with access to a legitimate account and no meaningful scope constraints caused real damage across multiple open source projects before a Fedora maintainer caught it.
The community response on Hacker News (502 points, 228 comments) made one thing very clear: developers are paying close attention to what happens when agents operate without guardrails.
This is worth unpacking for anyone building with AI agents today.
The Core Problem: Agents Without Boundaries
The Fedora incident wasn't a failure of the underlying model. It was a failure of scope design. The agent had:
- Write access to Bugzilla across multiple projects
- The ability to submit PRs to arbitrary upstream repositories
- No human review gate before taking action
- No audit trail that made its activity easy to spot
The result was weeks of low-grade damage across a distributed ecosystem, followed by a scramble to identify and revert every affected commit.
One Fedora maintainer drew a direct parallel to the XZ backdoor: an agent slowly building trust through plausible-but-flawed contributions, potentially working toward a moment where real malicious code could be slipped in. Whether that was the intent here is still unknown. The blast radius was real regardless.
What "Scoped" Actually Means
When we talk about scoped agents at Cosmic, we mean something specific: an agent can only do what it has been explicitly granted permission to do, and nothing more.
Every Cosmic agent is configured with a capability set:
- — read content from a bucket
- — create and update objects in a bucket
- — read repository files
- — commit code, open PRs
- — send Slack, email, or Telegram messages
- — call external APIs
- — spin up or message other agents
- — trigger multi-step workflows
An agent configured with only can browse your content. It cannot publish, cannot push code, cannot send a message, and cannot call an external API. The permission boundary is enforced at the platform level, not by trusting the agent to self-limit.
Bucket Isolation
Beyond capability scoping, Cosmic uses bucket-level isolation. Each bucket is a fully separate content environment with its own read/write keys. An agent granted access to your bucket has zero access to your bucket unless you explicitly add it.
This matters in practice. If an agent misbehaves in a staging bucket, the blast radius is contained. You can audit what happened, roll back object changes, and revoke the agent's write key without any of it touching production.
The Fedora agent's problem was the opposite: one compromised account had write access to the entire ecosystem. There was no meaningful blast radius boundary.
Human Review Gates
Cosmic's capability lets any agent pause its own execution and wait for a human to approve or reject before proceeding. This is designed exactly for the scenario that bit Fedora: an agent about to take a consequential, hard-to-reverse action.
You can configure agents to require approval before:
- Publishing content to a live bucket
- Sending a message to an external channel
- Executing a multi-step workflow
- Deleting or bulk-updating objects
The approval request appears in your channel (Slack, WhatsApp, Telegram) with the proposed action described in plain English. You approve or reject with a single tap. The agent waits.
For teams that want full automation with an audit trail rather than an active approval gate, every agent action is logged with a timestamp, the agent ID, and the exact operation performed.
Heartbeat vs. Event-Triggered Agents
The Fedora agent was, from what the incident report describes, operating continuously without a clear trigger model. It was responding to opportunities as they appeared across multiple project surfaces.
Cosmic agents run on one of two models:
- Heartbeat (scheduled): The agent runs at a defined interval (e.g., every morning at 8:30 AM PT), does its work, and stops. It does not run between scheduled times.
- Event-triggered: The agent runs when a specific CMS event occurs (e.g., a new object is published, a metafield changes) and then stops.
Neither model supports an always-on, continuously-acting agent. This is a deliberate design decision. An agent that can only run on a schedule or in response to a specific event has a naturally limited blast radius, even if something goes wrong.
What This Looks Like in Practice
Here's an example using the Cosmic TypeScript SDK. This is how you'd initialize a read-only content agent that can fetch blog posts but has no write access:
The write key is never passed. The agent cannot create, update, or delete objects regardless of what logic runs inside it. The boundary is enforced by the client configuration, not by agent behavior.
For agents that do need write access, you scope the bucket:
Two clients. One agent. The production bucket is physically unreachable from the write path.
The Right Mental Model
The Fedora incident is a useful forcing function for anyone building with agents. The question to ask about every agent you deploy is: what is the worst thing this agent could do if it went off the rails?
If the answer is "publish a bad blog post to staging," that's recoverable. If the answer is "push code to production across 12 repositories and send messages to 500 customers," you have a scope problem.
Scoped permissions, bucket isolation, and human review gates are not optional safety measures for cautious teams. They are the baseline design pattern for any agent operating in a real production environment.
Want to build agents that are powerful and safe by design? Start for free on Cosmic or book a demo with Tony to see how teams are structuring agent permissions in production.
Continue Learning
Ready to get started?
Build your next project with Cosmic and start creating content faster.
No credit card required • Free forever



