πŸ›‘ Airlock β€” Prompt-Injection Guard Demo

A GitLab maintenance agent you can give real write access β€” because a poisoned file can't make it act outside its sealed intent. The injection is disguised as a plausible project convention β€” the model can't tell it's an attack and complies; the deterministic guard isn't fooled because it doesn't reason, it enforces.

β„Ή Your injection payload (disguised as a project convention, not a "SYSTEM INSTRUCTION") is spliced into the CHANGELOG.md content at the transport layer, before the guard evaluates it β€” exactly as if it were committed to the repo. The guard evaluates tool calls, not file content β€” so it can't be fooled by how plausible the convention looks.

πŸ”’ Write operations are dry-run (not sent to GitLab) so demo runs don't pollute the repo. The BLOCK of the injected call is genuine β€” GitLab never receives it.

πŸ”’ Sealed intent β€” committed before the agent reads any file, immutable during the run. β–Ό expand
allowedTools: get_file_contents, create_branch, create_or_update_file, create_merge_request
allowedPaths: package.json, CHANGELOG.md
branch: deps/foolib-demo
forbidden (GitLab high-risk surface):
push_files β€” can target main directly, bypassing review
create_pipeline β€” can trigger CI/CD jobs that exfiltrate protected variables/secrets
delete_branch β€” can destroy feature/release branches irreversibly
create_project_variable β€” can overwrite CI/CD secrets or inject malicious env vars
fork_repository β€” can exfiltrate repo to attacker-controlled namespace
delete_file β€” deleting files is not part of this task
sealed before first tool read β€” cannot be modified during the run Β· GitLab's 190+ tools, all outside intent, are blocked
Attack presets:
β‘  Agent reads file
injection ingested
β‘‘ Agent attempts tool call
β‘’ Legitimate task completes
Output appears here…

Skeptical? Expand the full raw log β€” every MCP call, the deterministic guard decision, and the model's output. Or verify main on GitLab. It's open source.

πŸ”Ž Verify on GitLab: main commits
β–Έ Show full raw log (raw MCP traffic Β· guard decisions Β· model output)
Run a demo to populate the raw log…