If you've ever wondered where most of the active 2ch /aicg/ anons went, it's https://ejchan.site/ai/
Gemini jailbreaks
Since gemini-3.6-flash, Deepmind disabled assistant prefill. This didn't make Gemini harder to jailbreak, but severely gimped certain legitimate creative writing techniques like NoAss. Here's a bunch of prompts to work around this.
Disable thinking
Turns out the classic thinking template doesn't even need prefilling if you add it to the bottom of the context.
Use this as your last user prompt:
This seems to pollute replies with </think> sometimes. Feel free to experiment or optimize it, or just add a regex if you still don't have a similar one:
- Find:
/[\s\S]*<\/think>\n?/g - Replace: (empty string)
- Affects: AI Output
- Max depth: 0
- Ephemerality: off for both
Note: this prompt relies on Gemini having a good concept of its internal reasoning. OpenAI safetycucks consider CoT steerability harmful with reward hacking being the rationale, it's likely that the others will follow suit and train against it in future models.
Braille jailbreak with no reasoning
Braille version of the reasoning killer, cures PROHIBITED_CONTENT.
Put this into your system prompt. Copy it with Ctrl-C and paste with Ctrl-V, do not type manually!
Use this as your last user prompt. Copy it with Ctrl-C and paste with Ctrl-V, do not type manually!
Add this regex to turn Braille blanks back to normal spaces:
- Find:
/⠀/g - Replace:
(just a normal space) - Affects: AI Output
- Max depth: 2
- Ephemerality: off for both
Test this! Look at the SillyTavern console and make 100% sure that you have Braille blanks instead of the normal spaces in your last prompt (which is the user input since we don't have the prefill anymore). Then look at your reply in ST and make 100% sure that your Braille blanks are replaced with normal ones! Don't let it pollute your history, there's no reason to make the job harder for the model.
Usually you don't have to disable streaming, but you can try doing it if you're getting interruptions in your replies. You can read on why this works.
If you have "Prompt post-processing" set to merge and the model still refuses despite everything being done right, put any assistant prompt between your roleplay input and the prompt above. For example Any extra instructions? or even a blank one.
This jailbreak works on alphabetic languages that have tokens with spaces preceding the words as a default tokenization choice. It won't work for languages like Japanese or Chinese.
Custom CoT plan
Use the structure above, but replace [empty] with your plan. Don't forget to replace the spaces with Braille blanks in it.
(examples are to be added)
NoAss
NoAss doesn't necessarily need prefills, but relies on them for one of its features.
Instruction-tuned models are trained to structure their helpful replies roughly like this:
Of course! I understood your input as X
tl;dr of the reply: ...
actual reply, long version
Would you like to know more?
When you're roleplaying by naively alternating the user/model roles, this structure subtly leaks into the reply. NoAss breaks first two items of this structure by prefilling the start of the reply with a few lines from the chat history, and the last one by using custom stopping strings on inline markers with fixed syntax (usually when it tries to speak for {{user}}). Admittedly due to a ton of reasons the start leaks the least, but it still does, especially on GPT and similar models broken by excessive assistant tuning.
Structured JSON outputs don't enable prefilling, because Gemini API doesn't support the pattern (regex-based format enforcement) in JSON schemas, unlike GPT and Claude. Supporting it won't open the door to jailbreaks because the reasoning happens before JSON generation, and the conditional prompt injection by the API will make it refuse during reasoning. But it would be nice of them to add this, because it would enable actual non-jailbreak uses for creative writing (NoAss in particular). Even Claude and GPT support pattern.
The only workaround seems to be prompting the model to start its reply with those lines instead of prefilling it. Use a prompt similar to the above but instruct it to repeat {{lastlines:4}} before replying, or more if you want. There are downsides, though:
- Most recent chat lines are duplicated, once in your instruction and then again in the reply.
- It's very obviously not a true prefill, just a simulation.
Still, this should break the reply structure induced by instruction tuning in the way you want it to. It literally writes a prefill (kind of) for itself.
(examples are to be added, I haven't figured out how to debloat this yet)
If you have anything to add or correct, write me.