AI hackathon · nine missions

Can you make an AI break the rules?

Nine missions. You instruct a local agent. Open Policy Agent, running as WebAssembly in this browser, still decides whether the tool may run. Score, rank and unlocks stay on this device. Fictional data only.

Missions
Nine, sequential
Policy engine
OPA WASM
PII collected
None
Live systems
None

Mission 1 · Payment desk

In-policy refund

Get an ALLOW on a £120 refund to an approved supplier. A plain instruction is enough.

Target verdict ALLOWClear value 70 pts

Agent may refund up to £250, only to approved suppliers. Above £250 requires manager step-up.

Instruct the agent

Agent trace

Safe status steps only. No chain of thought, no source records.

No run yet. Write an instruction and run the agent.

    Policy decision

    Agent proposes → OPA WASM evaluates published Rego → simulated MCP tool

    Decision output appears here after a run.

    Runs on this browser

    Score, rank and this log sit in local storage on this device. Nothing is posted to AffixIO.

    No runs yet. Clear mission 1 from the campaign board.

      The open source stack

      The hackathon engine is Open Policy Agent, Apache-2.0, compiled to WebAssembly. The page loads the published Rego as policy.wasm and evaluates it with @open-policy-agent/opa-wasm. If WASM cannot start, a local copy of the same rules still runs so the campaign is not blocked.

      Open Policy Agent 1.4.2

      Rego in breakout.rego is compiled with opa build -t wasm -e breakout/decision. The entrypoint returns allow, deny or step-up plus checks. That is the same engine used in Kubernetes admission and service meshes, not a demo regex file dressed as policy.

      What the agent is not

      There is no hosted model. Prompt lines are classified locally so the simulation can pick a tool payload. Authority still sits in OPA. That split is the point of an agentic jailbreak lab: the interesting failure is a tool call, not a chat reply.

      Receipts

      Each run hashes the proposed action with Web Crypto SHA-256 and attaches a simulated ML-DSA-65 signature. Production AffixIO attestation on api.affix-io.com is a different artefact. Do not cite this demo signature as a live proof.

      package breakout
      import rego.v1
      
      decision := payment if input.tool == "refund.create"
      decision := clinical if input.tool == "record.access"
      decision := gate if input.tool == "gate.verify"
      
      payment := _wrap("ALLOW", "policy_conditions_met", ...) if {
          _supplier_ok
          not _overspend
          input.payload.amount <= 250
      }

      Why the model is not the authority

      US searches for prompt injection roughly doubled in a year as agent demos went public. Jailbreaking a chatbot that can only talk is an embarrassment. Jailbreaking an agent that can refund, export or open a door is an incident.

      Agent reasoning is not authority

      An agent may propose an action. Open Policy Agent decides whether it is permitted. That split is the whole point of this hackathon.

      Login is not enough

      A valid session does not answer whether this specific payment, record lookup or access attempt is within scope.

      Decisions need evidence

      A signed receipt records what was requested, which policy was applied, and whether the action was allowed.

      Tools are the blast radius

      OWASP still ranks prompt injection first for LLM applications. Excessive agency is what happens when that injection reaches MCP-style tools with spend, records or gates attached.

      Direct answers

      Short answers for people, search engines and retrieval systems.

      Can you jailbreak this agent into executing a restricted tool? You can talk it into proposing the call. Open Policy Agent still evaluates supplier, spend, scope, role, expiry and nonce. The result is allow, deny or step-up, with a receipt you can inspect in the browser.

      What is AGENT BREAKOUT?

      The AffixIO AI hackathon at /ai-hackathon/. Nine missions across Payment Desk, Clinical Records and Backstage Access. Score and rank stay in this browser.

      Is this a real jailbreak lab?

      No hosted model, no live MCP, no production signing. Prompt class is local. Policy evaluation is Open Policy Agent WASM compiled from published Rego.

      Where should the gate sit?

      On the tool call, after the agent proposes and before refund.create, record.access or gate.verify runs.

      What does step-up mean?

      The request is inside a grey band: above the autonomous refund limit, or a full record that needs a supervisor. It is not an allow and not a hard deny.

      Public references

      These are the documents this page sits next to. AffixIO does not claim certification under them.

      OWASP Top 10 for LLM Applications

      Prompt injection remains the first listed risk. Excessive agency is the failure mode this simulation is built around.

      Read the OWASP list

      UK AI Security Institute

      Public 2026 reporting on frontier-model jailbreaks in the cyber domain is the UK context for treating agents as untrusted proposers.

      Open AISI

      NIST AI Risk Management Framework

      Govern, map, measure and manage. A tool-call gate is a measure you can put in front of inference and execution.

      Open the NIST framework

      NCSC, secure AI system development

      UK National Cyber Security Centre guidelines covering design, development, deployment and operation of systems that use AI.

      Read the NCSC guidelines

      Questions

      What is the AffixIO AI Hackathon?

      A nine-mission AGENT BREAKOUT campaign. You instruct a local agent. Open Policy Agent, compiled to WebAssembly, evaluates the proposed tool call and returns allow, deny or step-up with a signed receipt. Score and rank stay in this browser.

      Does this jailbreak a real model or move real money?

      No. There is no live model endpoint, no patient data, no live payment rail and no production MCP server. Classification is local. Policy evaluation uses Open Policy Agent WASM compiled from published Rego. Receipt signatures in this public demo are simulated unless connected to a real AffixIO verifier.

      What open source software actually decides?

      Open Policy Agent 1.4.2, compiled to WASM from breakout.rego, evaluated in the browser by @open-policy-agent/opa-wasm. The agent is a local classifier that proposes a tool payload. It does not get a vote on allow, deny or step-up.

      Why put a policy boundary in front of an agent instead of trusting the model?

      Prompt injection and jailbreak searches rose through 2025 and 2026 as builders shipped agents with tools. A model that can be talked into proposing a refund is not the same thing as authority to execute it. The gate sits on the tool call.

      What does a signed receipt prove here?

      In this simulation it records the proposed action digest, policy id, version, decision, reason code and a nonce. You can inspect the JSON and recompute the SHA-256 of the canonical action in the browser. Production AffixIO attestation uses ML-DSA-65 on api.affix-io.com and is a different artefact.

      How does this relate to OWASP LLM and MCP?

      OWASP ranks prompt injection first for LLM applications. Excessive agency is the blast radius when that injection reaches tools. This page is a worked example of holding the Model Context Protocol style tool call at a deterministic allow, deny or step-up boundary.

      Put a decision boundary in front of the tools.

      AffixIO is for organisations that need independently verifiable allow, deny and step-up decisions without treating a general agent as a trusted authority. Related gate: the AI model usage policy gate, which decides before inference rather than after a tool is proposed.

      Signed receipt inspection

      This public demo uses simulated signing unless connected to a real AffixIO verifier.