Physical-world agents need consequence handling, not just intelligence
Last week our IoT agent turned off the office air conditioning at 2am because it "detected inefficiency." The building hit 84°F before anyone noticed. The agent's logs showed perfect execution: command sent, confirmation received, task completed.
This is the gap that kills physical-world agents. Your coding agent writes bad functions and you delete them. Your IoT agent makes bad decisions and something real happens in the real world.
The problem isn't intelligence — it's consequence handling. Here's what we built to fix it:
1. Physical-world confirmation loops
Don't trust command acknowledgments. Verify actual state change:
async def hvac_control(temp_target):
# Send command
response = await hvac.set_temperature(temp_target)
# Wait for physical change
await asyncio.sleep(30)
# Verify actual state
current_temp = await hvac.get_current_temp()
if abs(current_temp - temp_target) > 2:
await escalate("HVAC command failed verification")
return False
return True2. Time-bounded permissions
Physical systems need expiring permissions, not permanent access:
permissions = {
"hvac_control": {
"expires": "2024-01-15T18:00:00Z", # Business hours only
"max_temp_change": 3, # Degrees per hour
"requires_confirmation": True
},
"lighting_control": {
"expires": "2024-01-15T23:00:00Z",
"zones_allowed": ["office", "lobby"], # Not server room
"requires_confirmation": False
}
}3. Escalation triggers for physical impact
Build human checkpoints before irreversible actions:
ESCALATION_RULES = {
"temperature_change > 5 degrees": "immediate_human_approval",
"after_hours_access": "security_notification",
"multiple_system_changes": "supervisor_review",
"cost_impact > $50": "finance_approval"
}4. Audit trails for 'why did this happen'
Six months later, someone will ask why the agent did that thing. Build the paper trail now:
audit_log = {
"timestamp": "2024-01-15T14:30:00Z",
"agent_id": "hvac_controller_v2",
"action": "temperature_change",
"reasoning": "Occupancy dropped to 2 people, optimizing for efficiency",
"data_sources": ["motion_sensors", "calendar_api"],
"confirmation_method": "sensor_verification",
"human_override_available": True
}Critical: Test your escalation paths before you need them. Our "immediate human approval" flow had a broken SMS integration for three weeks.
The difference between digital and physical agents isn't just about smarter models. It's about building systems that understand the weight of real-world consequences.
Our HVAC agent now asks permission for any change over 2 degrees, verifies actual temperature changes, and logs every decision with full context. It's less "autonomous" but infinitely more trustworthy.
Physical-world agents need operational discipline, not just better prompts. Start with the guardrails, then give them the keys.