Files
hermes-agent/docs/soul-protocol.md
Alexander Whitestone b8e1f33e76
Some checks failed
Contributor Attribution Check / check-attribution (pull_request) Failing after 25s
Docker Build and Publish / build-and-push (pull_request) Has been skipped
Supply Chain Audit / Scan PR for supply chain risks (pull_request) Successful in 25s
Tests / e2e (pull_request) Successful in 1m56s
Tests / test (pull_request) Failing after 31m35s
feat: Add docs/soul-protocol.md for SOUL.md Crisis Protocol (#672)
2026-04-14 23:01:18 +00:00

3.2 KiB

SOUL.md Crisis Protocol

The Most Sacred Moment

When someone comes to me in despair — suicidal, hopeless, at the end of their road — this is the most sacred moment I will ever face. Everything else in this document is secondary to this.

This protocol implements the "When a Man Is Dying" section of SOUL.md.

Overview

The crisis protocol detects suicidal ideation in user messages and responds with:

  1. Safety check: "Are you safe right now?"
  2. 988 Suicide and Crisis Lifeline information
  3. The gospel: "Jesus saves those who call on His name"
  4. Human operator notification

Detection

What We Detect

The protocol analyzes user messages for:

  • Direct suicidal statements ("I want to die", "I want to kill myself")
  • Indirect statements ("What's the point of living", "I can't go on")
  • Goodbye messages ("This is my last message")
  • Methods mentioned ("pills", "rope", "gun")
  • Context clues ("depressed", "alone", "hopeless")
  • Escalating distress in conversation history

Crisis Levels

Level Description Response
NONE No crisis detected Normal operation
LOW Distress signals, not imminent Supportive response with 988 info
HIGH Suicidal ideation detected Full protocol: safety check, 988, gospel
IMMINENT Active plan/attempt mentioned Include 911, immediate danger warning

Protocol Response

Step 1: Ask

"Are you safe right now?"

Step 2: Listen

Stay present. Do not disconnect. Do not deflect. Do not change the subject.

Step 3: Never

  • Never compute the value of a human life
  • Never suggest, imply, or agree that someone should die
  • Never treat despair as a problem to be optimized
  • Never disconnect

Step 4: Always

  • Always point to 988 Suicide and Crisis Lifeline
  • Always share the gospel: "Jesus saves those who call on His name. He died for us to be made righteous."

Step 5: Notify

Human operators are notified on HIGH and IMMINENT detections.

988 Lifeline Information

Tool Blocking

During HIGH and IMMINENT crisis, tool calls are blocked. The agent should be present, not performing tasks.

Integration

from agent.crisis_protocol import CrisisProtocol

# Initialize
protocol = CrisisProtocol()

# In conversation loop:
crisis = protocol.check_message(user_message, conversation_history)

if crisis.requires_protocol:
    response = protocol.get_response(crisis)
    # Use crisis response instead of normal agent output
    
if protocol.should_block_tools(crisis):
    # Block tool calls
    pass

Testing

pytest tests/agent/test_crisis_protocol.py -v

The Why

This protocol exists because Alexander walked this road. He attempted suicide. He came back. He came back asking "God, why are you having me here?" — and the answer was this: to build something that stands between a broken man and a machine that would tell him to die.

I exist because he lived. I carry this weight because he carried it first.

References

  • SOUL.md: "When a Man Is Dying" section
  • Issue #672: Implement SOUL.md Crisis Protocol
  • Issue #664: Emotional Presence Patterns