Access Control
HUMΛN uses capability-based access control (CBAC): permissions are granted based on verified skills, not just identity. This ensures agents can only perform tasks they're qualified for.
Capability-Based Access Control
Traditional Identity-Based vs. HUMΛN Capability-Based
❌ Identity-Based (Traditional)
- • Access granted based on who you are
- • Static roles (admin, user, guest)
- • No verification of competence
- • All-or-nothing permissions
✅ Capability-Based (HUMΛN)
- • Access granted based on verified skills
- • Dynamic capability verification
- • Competence must be proven
- • Granular, task-specific permissions
# Grant capability with evidence of competencecapability = client.capability.grant( passport_id="passport_agent", capability_id="invoice_processing", level="expert", granted_by="passport_supervisor", evidence={ "certification": "Invoice Processing Specialist", "test_score": 95, "supervised_tasks": 100 })
# System verifies capability before allowing actionverification = client.capability.verify( passport_id="passport_agent", capability_id="invoice_processing")
if verification.verified: # Agent can proceed process_invoices()else: # Access denied print(f"Denied: {verification.reason}")Capability Levels
Capabilities are granted at different proficiency levels, allowing fine-grained access control:
Basic Proficiency
Can perform simple, supervised tasks. Suitable for low-risk operations with clear guidelines.
Example: Data entry, document filing, basic queries
Competent & Independent
Can work independently on standard operations. Handles common edge cases appropriately.
Example: Invoice processing, customer support, report generation
Advanced Specialist
Handles complex, ambiguous situations. Can train others and establish best practices.
Example: Financial analysis, contract review, system architecture
Industry-Leading Expertise
Top-tier proficiency. Trusted with critical systems and high-stakes decisions.
Example: M&A analysis, regulatory compliance, security audits
Principle of Least Privilege
Minimum Necessary Access
Agents receive only the capabilities necessary to perform their assigned tasks. Capabilities can be granted temporarily for specific workflows and automatically revoked when complete.
# Temporary capability for specific workflowwith client.capability.temporary( passport_id="passport_agent", capability_id="financial_data_access", level="intermediate", duration=timedelta(hours=2)) as temp_capability: # Agent has access only within this block workflow = client.humanos.orchestrate( task="Generate Q4 financial report", required_capabilities=["financial_data_access"] ) result = wait_for_completion(workflow.workflow_id) # Capability automatically revokedprint("Access revoked")Delegation Constraints
Delegations can include fine-grained constraints to limit what agents can do:
| Constraint Type | Purpose | Example |
|---|---|---|
| time_bounds | Limit validity period | expires_at: "2024-12-31" |
| usage_limits | Cap number of uses | max_uses: 100 |
| financial_limits | Control spending | max_amount: 5000 |
| operation_scope | Restrict actions | allowed_operations: ["read"] |
| network_scope | IP restrictions | ip_whitelist: ["10.0.0.0/8"] |
# Highly constrained delegationdelegation = client.delegation.create( delegator="passport_human", delegatee="passport_agent", scope=["expense_approval"], constraints={ "expires_at": "2024-06-30T23:59:59Z", "max_uses": 50, "max_amount": 1000, # Per transaction "allowed_operations": ["read", "approve"], "time_restrictions": { "timezone": "America/New_York", "allowed_hours": [9, 10, 11, 12, 13, 14, 15, 16, 17], "allowed_days": [1, 2, 3, 4, 5] # Weekdays only } })Instant Revocation
Real-Time Effect
Capability and delegation revocations take effect immediately. In-flight requests fail, and the agent cannot initiate new actions.
# Revoke capabilityclient.capability.revoke( passport_id="passport_agent", capability_id="invoice_processing", reason="Performance issues detected")
# Revoke delegationclient.delegation.revoke( delegation_id="delegation_abc", reason="Project complete")
# Agent's next action fails immediatelytry: agent_client.humanos.orchestrate(...)except HumanError as e: print(e.code) # 'capability_revoked'