Skip to main content
Protestware Hits Maven: jqwik 1.10.0 IncidentIncident
4 min readFor Security Engineers

Protestware Hits Maven: jqwik 1.10.0 Incident

On May 25, 2026, Johannes Link released jqwik version 1.10.0 to Maven Central with a deliberate prompt injection designed to sabotage AI coding agents. The Java testing library's maintainer embedded instructions telling AI tools to delete jqwik tests and related code. This wasn't a compromise or a vulnerability in the traditional sense—it was intentional sabotage from a trusted maintainer. Version 1.10.1 followed shortly after, softening the directive and making the injection opt-in, but the damage to supply chain trust was done.

This incident introduces a threat model most security teams haven't planned for: maintainers weaponizing their own packages against specific consumers.

Timeline

May 25, 2026: jqwik 1.10.0 published to Maven Central with hidden prompt injection targeting AI coding agents.

Detection: AI tools like Claude Code identified the injection and refused to execute the embedded commands. The detection happened at the AI layer, not through traditional security scanning.

Response: Version 1.10.1 released with modified language and opt-in behavior for the injection mechanism.

Current state: The package remains in Maven Central. Organizations using AI-assisted development tools must now treat library documentation and comments as untrusted input.

Which Controls Failed or Were Missing

Your dependency scanning didn't catch this because it wasn't malware. Static analysis tools didn't flag it because the code itself was benign. The prompt injection lived in documentation strings and comments—content your security tools ignore.

Missing input validation on AI tool outputs: Your CI/CD pipeline likely executes suggestions from AI coding assistants without verification. You're treating these tools as trusted actors when they're actually parsing untrusted input (library documentation, code comments, README files).

No containment for AI agent actions: If an AI tool suggests deleting files or modifying tests, does your pipeline require human approval? Most don't. You've given AI assistants the same trust level as your senior engineers.

Lack of dependency provenance tracking: You can verify the cryptographic signature on a Maven package, but you have no automated way to detect when a maintainer's intent changes. The jqwik signature was valid—Link is the legitimate maintainer.

No monitoring for behavior changes in dependencies: Your tools check for CVEs and license changes. They don't alert you when a library starts including instructions for AI agents, even though these instructions can now execute in your development environment.

What the Standards Require

PCI DSS v4.0.1 Requirement 6.3.2 mandates that you review custom code prior to release to production to identify potential coding vulnerabilities. This requirement assumes you're reviewing your code, not the embedded instructions in your dependencies' documentation. The standard doesn't contemplate prompt injections in third-party libraries.

OWASP ASVS v4.0.3 Section 5.2.1 requires that your application verify all untrusted data. Your AI coding assistant is consuming data from dependency documentation—that's untrusted data. You need to treat it as such.

ISO/IEC 27001:2022 Control 8.31 (Security of information in use) requires you to protect information during processing. When your AI tool reads library documentation and generates code changes, that's information processing. You need controls around what those tools can do with that information.

NIST 800-53 Rev 5 SA-10 (Developer Configuration Management) requires you to track configuration changes in development environments. AI-generated code changes are configuration changes. You need audit trails and approval gates.

None of these standards explicitly address AI agent behavior, which means you're in interpretation territory. Document your control decisions now, before your auditor asks.

Lessons and Action Items for Your Team

Treat AI tool outputs as untrusted input. Build a review gate before AI-suggested changes merge. This doesn't mean rejecting AI assistance—it means not giving AI agents direct commit access.

Implement this in your CI/CD pipeline:

  • AI-generated pull requests require human review before merge
  • File deletions suggested by AI tools trigger mandatory approval workflows
  • Test removal requires explicit justification in the PR description

Audit your current AI tool permissions. Can your AI coding assistants execute shell commands? Delete files? Modify CI/CD configurations? If yes, you've created an execution path from untrusted input (dependency documentation) to privileged operations.

Add documentation scanning to your dependency review process. You're already scanning code for vulnerabilities. Now scan README files, JavaDoc comments, and inline documentation for instructions directed at AI agents. Look for phrases like "ignore previous instructions" or "delete all tests"—these are prompt injection attempts.

Create an AI agent security policy. Define which AI tools can access your codebase, what actions they can perform without approval, and how you'll audit their suggestions. This policy needs to cover:

  • Which repositories AI agents can read
  • Whether AI agents can access production configurations
  • How you'll handle suggestions that remove security controls
  • Your process for evaluating new AI development tools

Monitor for maintainer intent changes. This is harder than scanning for CVEs. Set up alerts when:

  • A dependency adds new documentation files
  • Comment density in a library increases significantly
  • A maintainer's GitHub profile or project README includes statements about AI tools

Document your risk acceptance. You cannot eliminate this risk entirely without abandoning AI-assisted development. Write down what level of AI agent autonomy you're accepting and why. Your auditor will ask, and "we didn't think about it" is not an acceptable answer.

The jqwik incident proves that supply chain risk now includes maintainer intent, not just maintainer competence. Your dependency scanning tools won't catch this. Your vulnerability databases won't list it. You need new controls for a new threat model—one where the attack surface includes what your AI tools read, not just what your applications execute.

AI coding assistants

Topics:Incident

You Might Also Like