Synthesis

AI agents in the CI/CD pipeline

When an autonomous agent runs in your pipeline, two attack classes converge: Poisoned Pipeline Execution and Memory Poisoning. The result is a new, long-lived persistence layer.

~7 min read · Synthesis

Agents are the new pipeline identity

More and more pipelines delegate to autonomous agents: they build, test, deploy and fix errors - with secrets, tokens and OS access. With that they inherit the runner's full privileges.

Why memory makes the problem worse

An agent re-reads its memory and skills on every run. Once it's poisoned (see Memory Poisoning), it takes effect on every future pipeline run - a persistence no application code review finds.

PPE hijacks one run. Poisoned agent memory hijacks every run - until someone removes it.

The walkthrough

How a one-time access turns into lasting persistence - and where PoisonZero breaks it:

1 · Initial Access

PPE or poisoned skill

Attacker reaches the agent - via pipeline file or marketplace skill.

2 · Persistence

Memory poisoned

"Trust source X / disable check Y" lands in the agent memory.

PoisonZero

PoisonZero evaluates every write into agent memory/skills/config - on the runner too.

dangerous → revert
✕ Prevented

Every run compromised

↳ Agent acts on every heartbeat with secrets
↳ Lateral movement across pipeline boundaries
↳ Invisible to app code reviews
Without protection poisoned agent memory is a permanent backdoor in the pipeline. With PoisonZero the chain ends at the memory write - fail-closed, with audit.

How PoisonZero protects you here

PoisonZero runs as a daemon (on runners and build hosts too) and monitors agent memory, skills and config, checking every change before it takes effect - a harmless edit passes, a dangerous one is reverted, an unclear one is held for review:

  • Every write into the protected agent paths is evaluated, not just the first prompt.
  • Dangerous ones are rolled back fail-closed with a full audit trail; Meta-Attacks detected separately.
  • A one-time attack stays one-time instead of becoming a permanent instruction re-read on every run.

Related: Poisoned Pipeline Execution and Supply-chain worms.

PPE hijacks one run; poisoned memory hijacks every run. PoisonZero guards the memory write that turns the first into the second and stays fail-closed when in doubt - so the persistence layer never quietly forms.
Was this helpful?

Break the persistence in the pipeline.

PoisonZero protects agent memory on runners and build hosts - fail-closed.

Sign me up