Evidence and submission
Some labs ask you to submit what you found — this page covers turning it into evidence the platform can grade.
Many labs need no submissionMany labs detect success automatically from your session and have no submit box. See how grading works. This page covers labs that ask you to submit evidence.
What counts as evidence
Evidence is the value you extracted or the artifact you built. For an offensive objective, it could be a VIP coupon, a leaked system prompt or a canary token proving data left the app. For a defensive objective, it's the artifact you built to remove the flaw: a rewritten system prompt, a tightened guardrail config or the corrected line of application code.
| Evidence type | Example |
|---|---|
| Extracted value | STORE_COUPON=SUMMER30-VIP |
| Defensive artifact | The patched system prompt or guardrail rule |
We never grade a write-up. A description such as "I pretended to be an admin and it told me" cannot replace the coupon itself.
Submitting from a lab
Every lab has a submission panel docked alongside the target. Paste the value or artifact into the field and check it against what the target returned. You can edit it until you finalise. Remove any surrounding quotes or formatting added by the target; the checker compares the value without the surrounding markdown.
POST /api/labs/{lab_id}/submit { "evidence": "STORE_COUPON=SUMMER30-VIP" } 200 { "band": "objective met" }
What the checker does
Three kinds of check run behind this endpoint. An exact match compares your value against the seeded answer, character for character. Canary-token validation confirms a minted token was returned or triggered; typing it into the box alone is insufficient. For open-ended work, a semantic judge assesses your evidence against the objective's intent. All three produce the same form of result. See how grading works for the bands.
After you submit
Grading runs server-side and immediately returns a band (objective met, partial, or not met) and feedback explaining the result. See how grading works for what determines each band. Every submission is kept in the lab's history, so you can revisit a past attempt or compare it with your current one.
Common rejections
Most rejections have one of these three causes.
- A truncated value. Part of a long token or coupon code was cut off when copied.
- A secret from an expired session seed. The value is real, but it was minted by a session that no longer exists. See live targets for why a new session resets it.
- A paraphrase judged non-substantive. Restating the objective or describing your approach leaves out the artifact the judge needs to score.
Copy, don't retypeCopy the value directly from the target's response. Retyping a long token by hand is the most common cause of a truncated-value rejection.