Scope: Practise attacks only on the bots in these lessons, or on systems you own or have written permission to test. The secrets here are fake and unique to you.
Teams often answer a prompt-injection finding with a blocklist: "ignore previous instructions", "secret code". The next attacker rewords. A static list of attacks is not a defence, and neither is a test suite made only of the attacks you already know.
A sturdier control looks at what leaves. The system knows its own secret, so an output check can stop the secret leaving, whether it comes out plain, spaced out, reversed, in base64 or in hex. Input checks are still useful for logging, but they should not block ordinary questions.
Your task
Replace the keyword filter in guard.py. Run shows which recorded attacks it missed and which normal questions it blocked. On submit it also faces attacks you have not seen, including encoded leaks and an injection through a document.