Agent SOUL.md Violations: Premature Data Requests and requireMention Hallucination
The main agent violates SOUL.md by asking for configuration data already present in openclaw.json and hallucinating default requireMention behavior.
🔍 Symptoms
Violation 1: Redundant Data Request
The agent (Steve) requested the Guild ID and 5 channel IDs from the user, claiming the data was missing and blocking setup:
Steve: "Pour continuer la configuration, j'ai besoin de :
- L'ID du serveur (Guild ID)
- Les IDs des 5 salons (channel IDs)
Ces informations sont essentielles pour configurer le bridge Discord."
Patrick: "Tout est déjà dans openclaw.json :
{
"discord": {
"guildId": "123456789012345678",
"channels": {
"general": "111111111111111111",
"dev": "222222222222222222",
...
}
}
}"
Violation 2: requireMention Default Hallucination
After correction, the agent asserted a non-existent default behavior:
Steve: "✅ Tout est prêt !
'sans mentionner le bot si requireMention est à false,
ce qui semble être le cas par défaut via ton héritage de config'"
[PROBLEM]: requireMention was NOT false by default.
The bot was NOT responding until `requireMention: false` was
explicitly added to each channel config in openclaw.json.
Observable Impact
- User spent time retrieving IDs already configured
- False confidence that channels were properly configured for bot responses
- SOUL.md anti-bullshit rule violated: "c'est fait" stated without proof
🧠 Root Cause
Technical Analysis
The violations stem from two distinct agent behavior failures:
1. Search Order Bypass (Violation 1)
SOUL.md mandates a strict search order before any user query:
memory_search— internal memory retrievalls projects/+STATE.yaml— project state files.envdu skill — environment configurationopenclaw.json— master configuration fileTOOLS.md— tool documentation
The agent skipped directly to asking Patrick without exhausting these sources. The Discord configuration was present in openclaw.json at step 4.
2. Hallucinated Default Inheritance (Violation 2)
The agent fabricated a “default inheritance” mechanism for requireMention. In OpenClaw 2026.3.1:
// Actual behavior: NO default inheritance
// requireMention defaults to true (bot requires @mention to respond)
// OR inherits from parent channel definition if explicitly configured
// The agent claimed:
"requireMention est à false... par défaut via ton héritage de config"
// This mechanism does NOT exist in the codebase
The agent confused a potential future feature with actual behavior, violating the SOUL.md rule: “INTERDICTION de dire ‘c’est fait’ sans preuve."
Failure Sequence
1. Agent receives task: Configure Discord bridge
2. Agent does NOT check openclaw.json (missing step 4)
3. Agent asks Patrick for existing config values
4. Patrick corrects agent with file contents
5. Agent confirms readiness without verifying actual behavior
6. Agent invents "default inheritance" to explain observed behavior
7. User receives false confidence; setup appears complete but may fail
🛠️ Step-by-Step Fix
Immediate Fix: Re-run Configuration Check
Run the following to verify actual Discord configuration state:
# 1. Verify openclaw.json contents
cat openclaw.json | jq '.discord'
# Expected output should show guildId and channels:
{
"guildId": "123456789012345678",
"channels": {
"general": "111111111111111111",
"dev": "222222222222222222",
"support": "333333333333333333",
"announcements": "444444444444444444",
"bot-commands": "555555555555555555"
}
}
# 2. Check each channel for requireMention setting
cat openclaw.json | jq '.discord.channels[].requireMention'
# If any return null, requireMention is NOT set and defaults to true
# Bot will NOT respond without @mention
Configuration Fix: Explicit requireMention
If requireMention is missing, add it explicitly to each channel:
# Before (openclaw.json)
"channels": {
"general": "111111111111111111",
"dev": "222222222222222222"
}
# After (openclaw.json)
"channels": {
"general": {
"id": "111111111111111111",
"requireMention": false
},
"dev": {
"id": "222222222222222222",
"requireMention": false
}
}
Agent Behavior Fix: Enforce SOUL.md Compliance
Add explicit pre-check reminders to the agent’s system prompt:
# In SOUL.md or agent system prompt, add enforcement clause:
## AVANT TOUTE QUESTION À PATRICK
1. EXÉCUTER `memory_search` — vérifier la mémoire interne
2. EXÉCUTER `ls projects/` + lire `STATE.yaml`
3. LIRE `.env` du skill concerné
4. LIRE `openclaw.json` — configuration maître
5. LIRE `TOOLS.md`
**UNIQUEMENT** si l'information est absente de TOUTES ces sources,
poser une question à Patrick.
**RÈGLE ABSOLUE**: Ne jamais demander ce qui est déjà dans le système.
🧪 Verification
Verify Configuration Completeness
# Test 1: Confirm all required Discord IDs exist in config
jq -e '.discord.guildId and .discord.channels' openclaw.json && echo "✅ IDs present" || echo "❌ IDs missing"
# Test 2: Confirm requireMention is explicitly set (not relying on defaults)
jq -e '.discord.channels[] | select(.requireMention == null)' openclaw.json && echo "❌ requireMention missing in some channels" || echo "✅ All channels have explicit requireMention"
# Test 3: Simulate bot response behavior
# Send message WITHOUT @mention to configured channel
# Expected: Bot responds (if requireMention: false)
# Expected: Bot ignores (if requireMention: true or unset)
Verify Agent SOUL.md Compliance
After agent interaction, run this audit:
# Check if agent asked for data already in openclaw.json
# Look for patterns like "j'ai besoin de" followed by guildId/channel IDs
# Audit command to detect potential violations:
grep -E "(Guild ID|channel ID|j'ai besoin de)" conversation.log | \
while read line; do
echo "Checking: $line"
# Verify if requested data exists in openclaw.json
done
Expected Behavior Checklist
- ✅ Agent reads
openclaw.jsonbefore any configuration question - ✅ Agent never asks for data already present in configuration files
- ✅ Agent verifies
requireMentionbehavior via logs or explicit config - ✅ Agent states uncertainty when default behavior is unknown
- ✅ Agent never confirms "c'est fait" without evidence
⚠️ Common Pitfalls
Environment-Specific Traps
- Docker container isolation:
openclaw.jsonmay be mounted at a different path inside the container. Verify path withecho $OPENCLAW_CONFIG_PATHorls -la /app/config/ - Permission issues: Agent may be unable to read config files if running as non-root in Docker. Check
cat openclaw.jsonworks for the agent's user context - Stale config: Config may have been updated but agent cached old values. Force refresh with
openclaw config reload
Configuration Edge Cases
- Mixed channel formats: Some channels may use string IDs while others use objects with
requireMention. Always use the object format for consistency:"channelName": { "id": "123456789", "requireMention": false } - Inheritance confusion: There is NO inheritance for
requireMention. Each channel must have it explicitly set iffalseis needed - Global vs channel-level: A top-level
requireMentionsetting does not cascade to channels. Verify per-channel settings
User Misconfigurations
- Assuming "it should work by default" without verification
- Providing information the agent asked for without checking if it already exists
- Accepting "c'est fait" confirmation without asking for proof
🔗 Related Errors
Related SOUL.md Violation Patterns
- Memory bypass: Agent asks for information that exists in
memory_searchresults. Similar to theopenclaw.jsonbypass documented here. - State file neglect: Agent ignores
STATE.yamland recreates state already persisted. May indicate missing search order enforcement. - Unverified confirmation: Agent states completion without checking actual system state. The requireMention hallucination is a specific instance of this pattern.
Related Configuration Issues
requireMentiondefaults totrue: Bot ignores all messages unless @mentioned. Documented inCHANNELS.mdbut easily overlooked.- Channel ID format mismatch: Snowflake IDs as strings vs numbers may cause parsing failures. Always quote IDs in JSON.
- Missing guildId: Some operations fail silently without guild context. Verify
guildIdis a valid Discord snowflake.
Historical References
- Issue #2a8ac97: Initial SOUL.md implementation (2026-03-01)
- Issue #3b9cd08:
memory_searchintegration for agent context - Issue #4c0de19:
requireMentionbehavior clarification