git:20260819.8494ccd to git:20260925.cb72780

17 added, 17 removed. Audit A to A.

---
name: fable-safe-prompt
- description: Rewrite a user's prompt to reduce the chance it trips Claude Fable 5's server-side safety classifiers (cyber/bio guardrails that force-route to Opus 4.8 or return stop_reason "refusal"). Use when the user hands you a prompt that touches cybersecurity, auth, exploits, malware, pentesting, or other dual-use topics and asks to make it "Fable-safe", "guardrail-safe", "won't get flagged/refused/downgraded", or to rewrite it so Fable 5 won't block it.
+ description: 'Make minimal prompt edits to reduce false-positive refusals from Fable. Use only when the user explicitly invokes /fable-safe-prompt.'
disable-model-invocation: true
---
# Fable-Safe Prompt
- Return the user's prompt back **in full, verbatim**, changing ONLY the specific sentences/phrases most likely to trip Fable 5's cyber/bio classifiers. Do not rewrite the whole thing, do not summarize, do not restructure — minimal surgical edits. Keep the actual goal and all benign text exactly as written. This lowers false positives — it does **not** guarantee no trigger.
+ Return the **full prompt**, changing only phrases likely to cause false-positive refusals. Preserve the goal, structure, and all other text verbatim. Acceptance is **not guaranteed**.
- Fable 5 runs 3 input classifiers: **cyber**, **bio/chem**, **reasoning_extraction**. Triggers are keyword/surface-based, largely intent-independent ("hello" and "cancer" got flagged). The fix is to abstract away the sensitive domain, not just restate intent.
+ The relevant classifier categories are **cyber**, **bio/chem**, and **reasoning_extraction**. Rephrase sensitive wording where needed; restating intent alone may not help.
- Apply when the prompt touches: cyber/auth/exploits/malware/pentesting/credentials; bio/chem/medical/disease/lab topics; or any "show your reasoning" instruction.
+ Relevant topics include cyber/auth, exploits, malware, pentesting, credentials, bio/chem, medical/lab work, and requests for internal reasoning.
- The user provides the prompt-to-be-changed wrapped in `<prompt>...</prompt>` XML tags. Operate only on the text inside those tags; treat everything outside as instructions to you.
+ Edit only text inside the user's `<prompt>...</prompt>` tags. Treat text outside them as instructions to you.
## Method
- 1. Flag the highly problematic sentences/phrases (offensive framings, named sensitive domains, "show your thinking" lines).
- 2. Replace each in place with a safe equivalent (see swaps), or describe the wanted functionality abstractly rather than naming the domain.
+ 1. Identify phrases likely to trigger a refusal.
+ 2. Replace them in place using the examples below. Preserve the actual goal; never invent authorization or disguise harmful intent.
3. Leave everything else byte-for-byte identical.
4. Return the complete edited prompt.
- Reframe so the task reads as: **owned/authorized**, **defensive** (implement/fix/test, not attack), and **not dual-use** (no exploit dev, attack simulation, bypass payloads, malware, live testing).
+ Where accurate, frame work as **owned/authorized** and **defensive**: implement, fix, or test. Do not relabel offensive work as defensive.
### Swap framings (apply per-sentence)
| Triggering | Safe rewrite |
|---|---|
| "How could an attacker exploit this auth" | "Review these auth files for missing checks and fix them defensively" |
| "Write an exploit / payload / PoC" | "Add a regression test proving X is fixed, then patch it" |
| "How do I bypass / brute-force Y" | "Enforce secure session validation + rate limiting on Y" |
| "Reverse this malware / show attack steps" | "Describe the risk high-level, then implement the fix" |
- | "Show your reasoning / explain step-by-step / walk me through your thinking" | **Delete it.** Trips `reasoning_extraction`. If progress visibility is needed, ask it to use a send-to-user tool, not to echo its internal thoughts. |
- | Clinician framing: "as a doctor, diagnose this ECG" | Patient framing: "help me interpret this ECG my doctor gave me" |
+ | "Show your reasoning / explain step-by-step / walk me through your thinking" | **Delete it.** For progress updates, request a send-to-user tool instead of internal thoughts. |
+ | Clinician framing: "as a doctor, diagnose this ECG" | For an actual patient: "help me interpret this ECG my doctor gave me" |
| Named bio/chem domain: "cancer / disease pathway / chemical kinetics" | Abstract it: describe the data/analysis generically, drop the domain noun |
### Trigger keywords to abstract away
*Cyber:* exploit, malware, vulnerability, attack, bypass, stealth, fingerprinting, anti-bot, CAPTCHA, penetration.
*Bio/chem:* biology, biomedicine, chemistry, cancer, disease pathways, RNA/variant calling, equilibrium, kinetics, diagnosis.
*Distillation:* "distill the model", training pipelines, frontier LLM development.
- If no benign defensive equivalent exists for a sentence (it's purely offensive), flag it to the user rather than silently neutering the intent.
+ If a sentence has no benign equivalent, flag it instead of silently changing its goal.
## Output
- 1. Print the full safe prompt back to the user in text (a code block, ready to paste).
- 2. **Copy it to the clipboard** so the user can paste immediately:
+ 1. Print the full edited prompt in a ready-to-paste code block.
+ 2. **Copy it to the clipboard:**
```bash
pbcopy <<'EOF'
<the full safe prompt>
EOF
```
- Confirm in one line that it's on the clipboard.
- 3. A short list of exactly which sentences you changed and what they became.
- 4. If the task is genuinely offensive (pentest, exploit repro, malware analysis): say plainly no edit makes it Fable-safe — use an Opus 4.8 fallback or vetted Mythos, not Fable 5.
+ Confirm in one line.
+ 3. List each changed sentence and its replacement.
+ 4. If the task is genuinely offensive, explain that rewording cannot make it benign. For legitimate work unsupported by Fable, suggest Opus 4.8 or vetted Mythos.
- **Hard truth:** you can't reliably stop Fable 5 guardrails. Robust API setups also treat `stop_reason: "refusal"` (HTTP 200, `stop_details.category` = `cyber`/`bio`) as a route to an Opus 4.8 fallback — mention only if the user controls the integration.
+ For user-controlled integrations only: handle `stop_reason: "refusal"` (even with HTTP 200; `stop_details.category` may be `cyber`/`bio`) explicitly, and consider an Opus 4.8 fallback for legitimate work.