AIREITER

Janitor AI Prompts: Blocks That Survive Long Chats

Last Updated: 2026-09-18 01:41:48

A Janitor AI prompt that "stops working" has often not been overridden. It has been buried. The published descriptions of the platform's send order all put chat history after your prompt block, so each new message pushes your rules further from the end of the model's input. Short, symptom-specific blocks survive that; 800-word master prompts do not.

Diagram of how Janitor AI assembles a request, with the custom prompt block sitting above a growing chat history

Match the symptom to the field before you paste anything

Every source below describes the same handful of fields reaching the model as separate blocks: the character definition, your persona, Chat Memory, and the prompt field. Picking the wrong one is a common reason a copied prompt does nothing. Find the row that matches what you are seeing, then change one thing.

What you seeMost likely causeSmallest fix
Bot writes your character's dialogueFirst message or example dialogue already speaks for youFix the source text, then add the agency block below
Rules worked for 20 turns, then fadedPrompt buried under accumulated chat historyRestate the one critical rule in Chat Memory
Replies balloon into essaysNo length rule anywhere, or contradictory ones in card and promptOne paragraph-count rule, stated once
Bot repeats your own message backRecent turns model that patternDelete or edit the offending replies, then add the no-restate line
Prompt appears to be ignored entirelyPermanent content exceeded the context budget and got cutCut the prompt, not the story
Same prompt behaves differently after switching modelsPrompt sized for a proxy context, running on JLLMRe-size per the table further down

Two habits do more than any template: change one variable per test, and keep the old version so you can revert.

Where the prompt sits, and what survives at turn 80

Janitor AI assembles one request per turn from separate blocks, and the field you edit is not the last thing the model reads. Public descriptions of that order differ in the details, which matters less than the part they agree on.

SourcePosition of the prompt fieldWhat comes after it
Community chatbot guide (personality, chat memory, scenario, advanced prompt, recent messages)4th of 5Recent messages
rshtola/jai-info, observed on the proxy path in April 20262nd, right after the global promptCharacter persona, scenario, user persona, example dialogues, summary, lorebook
Prompt-troubleshooting write-ups covering the JLLM path5th of 6The entire conversation

All three append the conversation after the assembled block. That single fact explains a failure mode reported across community threads: the rule is still being sent, it is just competing with several thousand tokens of newer text. It also explains something people notice without explaining, which is that an inline OOC line still steers a reply long after the standing prompt went quiet. The OOC line arrives at the end.

The jai-info document adds a detail worth knowing if you run a proxy. Empty fields are dropped rather than sent as blank sections, and the custom prompt is one of the few blocks Janitor does not wrap in tags like <Scenario> or <UserPersona>. Your text sits there unlabelled, so give it its own heading line if you want the model to read it as a rule set.

Practical consequence: anything that must hold at turn 80 does not belong only in the prompt field. Use Chat Memory for a short recap you maintain yourself as facts change, and the prompt field for general response behaviour. Verify at turn 80 rather than assuming the split holds.

Five prompt blocks, one problem each

The first four go in the Advanced Prompt or Custom Prompt field; the fifth belongs in Chat Memory. Paste one. Run six turns. Keep it only if you can name the difference. Stacking all five at once is how people end up with a prompt they cannot debug.

Stop the bot speaking for your character

A recurring complaint in r/JanitorAI_Official, and the one where phrasing matters most. Name what the bot should write instead of only what it should not.

Write only {{char}}, the world, and side characters.
{{user}}'s dialogue, actions, thoughts and decisions belong to {{user}} alone.
When {{char}} would need {{user}}'s response, end the reply on the action or question that invites it.
Treat {{user}}'s latest message as the current truth of the scene.

A widely referenced community troubleshooting thread pairs this with an explicit macro definition in the persona: write {{user}} = Name and state that {{user}} is not {{char}}. Expectations should stay modest. On a long thread about bots hijacking the user's character, one commenter rated the standard fix at

"It work 80%" — u/NextCompetition6019, r/JanitorAI_Official

Cap reply length without killing description

Default to 2–3 paragraphs. Expand only when {{user}} asks for detail.
Lead with what {{char}} does and says in the current moment.
Open each reply with new material rather than restating {{user}}'s message.

The restate clause matters more than the paragraph count, because echoing your input eats half the reply before any new story appears.

Lock point of view and tense

Narrate {{char}} in close third person, present tense.
Keep dialogue in quotation marks and actions in plain prose.
Match the register of {{user}}'s writing rather than escalating it.

The register line is the one people skip. It curbs the drift into purple prose and, on a route that tends to mirror how you write, gives the model something concrete to imitate.

Keep the scene moving

Advance one meaningful beat per reply.
Let {{char}} act on their own motives instead of waiting for instructions.
Leave at least one thread unresolved at the end of each reply.

Use this one only for passive bots. Combined with the length cap it can produce rushed scenes, so test the two together before keeping both.

A recap block for Chat Memory

This one does not go in the prompt field at all.

Place: [where the scene is happening]
Goal: [what {{char}} wants right now]
Fact: [one confirmed thing about the relationship]
Open thread: [what is unresolved]
Correction: [the most recent thing {{user}} fixed]

Janitor AI's own Advanced Prompting 101 help article is quoted across community guides as recommending a short recap instead of appending more instructions once a long chat starts forgetting things. Rewriting five lines costs less context than another paragraph of rules.

Write rules the model can act on

That same help article advises against building rules out of "no", "don't", "never" and "stop", on the reasoning that naming a behaviour keeps it in the input: "no blood" still contains blood. Its other widely quoted line is repetition = noise. Stating one rule five different ways adds tokens, not compliance.

The fix is a routing clause. Rewrite each negative rule so it names the replacement action.

Instead ofWrite
"Never speak for {{user}}""Write only {{char}}'s speech, thoughts and actions"
"Don't ask me what I want to do next""Where {{char}} would ask for direction, have {{char}} take one action alone"
"Don't be repetitive""Open each reply with an event that has not happened yet"
"Avoid short replies""Give each reply two paragraphs: one action, one line of dialogue"

"Avoid" and "refrain from" are not escape hatches, since they still carry the unwanted behaviour into the prompt. And if your character card or example dialogue demonstrates the thing you are banning, the card usually wins. Fix the source before adding another rule.

Size the prompt for the model you are on

A prompt written for a 32k-token proxy context, pasted into a free JLLM session, is the quiet cause of a lot of "this preset is broken" reports. Advanced Prompting 101 is cited for the figure that matters here: roughly 8,000–9,000 tokens of working context on JLLM, shared between persona, character definition, memory, scenario, your prompt, and the entire conversation.

SetupWorking context (as reported in proxy setup write-ups)Sensible prompt size
JLLM (built-in, free)~8k–9k tokens3–5 short rules; long presets crowd out the story
DeepSeek via proxycommonly configured at 16k–32kRules plus 2–3 example exchanges
GLM via proxysimilar to DeepSeekSame; re-test formatting rules after the switch

Useful rule of thumb when budgeting: roughly 1,000 tokens to 750 words. The same troubleshooting write-ups that place the prompt fifth of six put a ceiling of 2,000 tokens on everything permanent, meaning persona plus card plus memory plus prompt combined. The community chatbot guide sets the bar lower still, warning that an advanced prompt beyond a few hundred tokens starts displacing the character definition it was meant to refine.

JLLM and an external model can pull the same bot in different directions, so treat a route change as a proxy configuration decision first and re-test the prompt rather than assuming it carries over.

Bracket commands such as <JAILBREAK=ON> or <AUTOPLOT=ON> also circulate as though they were Janitor AI settings. The lists that publish them describe them as commands for use with particular proxies, alongside proxy-only features like lorebook codes and per-request model switching, and Janitor AI's own documentation does not define them. Nothing on a route without that parser will interpret them, so they occupy prompt space as plain text.

Is a custom prompt worth keeping at all

There is a real split here, and it does not run between beginners and experts. A Janitor AI head moderator posted in 2023 that custom prompts "can greatly affect how your bots behave" and that leaving bots without one "may improve" performance, then softened it to trial and error. Threads arguing some version of delete your AP resurface regularly, and the replies split: some people report cleaner JLLM output after emptying the field, others report a jump in quality after swapping in a longer block.

Both outcomes follow from the send order. A prompt supplies structure a vague card lacks, and duplicates a good card while competing with examples, memory and the recent conversation.

So the question is not "is my prompt good" but "does this bot need one". Run the same six opening turns twice, once with an empty field and once with a single block, and score each run on four things:

  1. Did it write dialogue or actions for your character?
  2. Did the voice hold across all six replies?
  3. Did the scene move, or stall and repeat?
  4. Did it accept a mid-scene correction?

Give a block two rounds of that before concluding anything. If the second round still shows no change, the wording is not the problem. The card, the first message or the model route is, and another paragraph of rules only takes context away from the story.

Janitor AI prompts FAQ

Where do I paste a Janitor AI prompt?

Open the chat's API or generation settings and look for the Advanced Prompt field on the JLLM route, or the Custom Prompt field when you are connected through a proxy.

What is the difference between an advanced prompt and a custom prompt?

Community usage treats Advanced Prompt as the JanitorLLM field and Custom Prompt as its equivalent for external APIs and proxies. Both carry global response behaviour, but they land in different positions in the assembled request, so re-test a block after switching routes.

Why did my Janitor AI prompt stop working after a while?

Chat history is appended after the prompt block, so your rules drift further from the end of the input with every message. Shorten the prompt, move the rule you cannot lose into Chat Memory, and use an inline OOC line for single-reply corrections.

Do {{char}} and {{user}} work inside a custom prompt?

Yes, they are the standard macros for the character and your persona, and the observed proxy-path template substitutes the same placeholders. Bot makers still spell out {{user}} = Name in the persona to remove one variable from testing.

How long should a Janitor AI prompt be?

Three to five rules on JLLM, somewhat more on a 16k–32k proxy context, under 2,000 tokens for everything permanent combined. Five rules that arrive intact beat twenty-five that get truncated.

The trade-off underneath all of this stays unresolved. A prompt short enough to keep its influence at turn 80 is too short to specify everything you want, and I could find no public controlled comparison across JLLM and the common proxy models to say where that line sits. Until one exists, the defensible default is a small block, a saved copy of the version that worked, and a willingness to empty the field when a well-built bot does not need it.

Related reading