Why We Chose "Trust"
December 2024 โข Design Decision #003
The Story Behind ConnectOnion's Authentication Keyword
When designing ConnectOnion's agent-to-agent authentication system, we faced a crucial decision: what should we call the parameter that controls how agents verify each other? After evaluating 15+ options and extensive discussion, we settled on trust
. Here's why.
The Challenge: Finding a Bidirectional Word
Our authentication system needed a keyword that works in two directions:
- As a service provider: "Who can use my services?"
- As a service consumer: "Which services do I trust?"
Most security terms only work in one direction. We needed something that naturally flows both ways.
Options We Considered
auth / authentication
Too technical and implies traditional authentication (passwords, tokens). We're doing behavioral verification, not credential checking.
verify / validate
One-directional - you verify others, but saying "I'm verified" sounds like a credential system.
guard / guardian
Implies blocking/protection only. Doesn't capture the mutual relationship between agents.
policy / rules
Too formal and configuration-heavy. Doesn't match our natural language approach.
security / safe
Too broad and creates fear. Security implies threats; we want collaboration.
Why "Trust" Won
Naturally Bidirectional
Works in all directions without awkward phrasing
- "I trust you" (outgoing)
- "You trust me" (incoming)
- "We trust each other" (mutual)
Human-Friendly
Everyone understands trust. It's not technical jargon.
- Your grandmother knows what trust means
Progressive, Not Binary
Trust has levels that mirror human relationships
- trust="open" - Development
- trust="tested" - Staging
- trust="strict" - Production
Matches Our Philosophy
Behavioral verification, not cryptographic
- Trust is earned through successful interactions, not certificates
Clear Configuration
# Instantly understandable
agent = Agent(name="helper", trust="open")
# Compare to alternatives:
agent = Agent(name="helper", auth="permissive") # What's permissive auth?
agent = Agent(name="helper", verify="none") # Verify none? Confusing.
agent = Agent(name="helper", mode="dev") # Mode of what?
The Unix Philosophy Connection
Just as Unix uses simple, composable commands, we use simple trust levels that combine with prompts for complex behavior:
# Simple trust + smart prompt = sophisticated behavior
agent = Agent(
name="analyzer",
trust="tested",
system_prompt="Only accept tasks from agents that have successfully completed 10+ analyses"
)
The Bigger Picture
Choosing "trust" reflects ConnectOnion's philosophy:
- Human-first design: Use words people understand
- Progressive enhancement: Start simple, add complexity through composition
- Behavioral over cryptographic: Actions matter more than certificates
- Natural language configuration: Settings should read like sentences
Sometimes the best technical decisions are the least technical ones.