2026-01-18 06:21:00 +00:00
|
|
|
|
---
|
|
|
|
|
|
summary: "SOUL Evil hook (swap SOUL.md with SOUL_EVIL.md)"
|
|
|
|
|
|
read_when:
|
|
|
|
|
|
- You want to enable or tune the SOUL Evil hook
|
|
|
|
|
|
- You want a purge window or random-chance persona swap
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# SOUL Evil Hook
|
|
|
|
|
|
|
|
|
|
|
|
The SOUL Evil hook swaps the **injected** `SOUL.md` content with `SOUL_EVIL.md` during
|
|
|
|
|
|
a purge window or by random chance. It does **not** modify files on disk.
|
|
|
|
|
|
|
|
|
|
|
|
## How It Works
|
|
|
|
|
|
|
|
|
|
|
|
When `agent:bootstrap` runs, the hook can replace the `SOUL.md` content in memory
|
|
|
|
|
|
before the system prompt is assembled. If `SOUL_EVIL.md` is missing or empty,
|
|
|
|
|
|
Clawdbot logs a warning and keeps the normal `SOUL.md`.
|
|
|
|
|
|
|
|
|
|
|
|
Sub-agent runs do **not** include `SOUL.md` in their bootstrap files, so this hook
|
|
|
|
|
|
has no effect on sub-agents.
|
|
|
|
|
|
|
|
|
|
|
|
## Enable
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
clawdbot hooks enable soul-evil
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Then set the config:
|
|
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"hooks": {
|
|
|
|
|
|
"internal": {
|
|
|
|
|
|
"enabled": true,
|
|
|
|
|
|
"entries": {
|
|
|
|
|
|
"soul-evil": {
|
|
|
|
|
|
"enabled": true,
|
|
|
|
|
|
"file": "SOUL_EVIL.md",
|
|
|
|
|
|
"chance": 0.1,
|
|
|
|
|
|
"purge": { "at": "21:00", "duration": "15m" }
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-01-18 06:39:21 +00:00
|
|
|
|
Create `SOUL_EVIL.md` in the agent workspace root (next to `SOUL.md`).
|
|
|
|
|
|
|
2026-01-18 06:21:00 +00:00
|
|
|
|
## Options
|
|
|
|
|
|
|
|
|
|
|
|
- `file` (string): alternate SOUL filename (default: `SOUL_EVIL.md`)
|
|
|
|
|
|
- `chance` (number 0–1): random chance per run to use `SOUL_EVIL.md`
|
|
|
|
|
|
- `purge.at` (HH:mm): daily purge start (24-hour clock)
|
|
|
|
|
|
- `purge.duration` (duration): window length (e.g. `30s`, `10m`, `1h`)
|
|
|
|
|
|
|
|
|
|
|
|
**Precedence:** purge window wins over chance.
|
|
|
|
|
|
|
|
|
|
|
|
**Timezone:** uses `agents.defaults.userTimezone` when set; otherwise host timezone.
|
|
|
|
|
|
|
|
|
|
|
|
## Notes
|
|
|
|
|
|
|
|
|
|
|
|
- No files are written or modified on disk.
|
|
|
|
|
|
- If `SOUL.md` is not in the bootstrap list, the hook does nothing.
|
|
|
|
|
|
|
|
|
|
|
|
## See Also
|
|
|
|
|
|
|
|
|
|
|
|
- [Hooks](/hooks)
|