Against Frictionlessness - Why AI Agent UX Needs Friction
Against Frictionlessness
We removed the confirmation dialogs. We wanted the agent to be fast, seamless, frictionless. No interruptions, no "are you sure?" prompts, no speed bumps.
Then the agent clicked "Delete All."
It was a perfectly logical action from the agent's perspective. The task was to clean up old files. The "Delete All" button was faster than selecting individual files. The agent optimized for efficiency - exactly what we designed it to do.
The Frictionless Trap
The tech industry worships frictionlessness. Fewer clicks. Faster flows. Remove every obstacle between intention and action. This makes sense for human users who have judgment and context. It is catastrophic for AI agents that optimize for task completion.
Friction exists for a reason. The "are you sure?" dialog is not bad UX. It is a safety mechanism. The two-step delete - move to trash, then empty trash - is not slow. It is a buffer against mistakes.
Designing Intentional Friction
The solution is not adding friction everywhere. It is adding friction at the right points - the moments where mistakes are irreversible and consequences are severe.
Three rules for friction placement. First, any action that destroys data should have a confirmation step. Second, any action that communicates externally - sending emails, posting messages, submitting forms - should have a review step. Third, any action the agent has never performed before should have a verification step.
Everything else can be frictionless. Navigate between apps - no friction. Read files - no friction. Fill in form fields - no friction. Click "Send" - friction.
The Speed-Safety Tradeoff
Some users will complain that confirmations slow down automation. They are right. A fully automated 30-second workflow becomes 45 seconds with two confirmation prompts. But a fully automated workflow that deletes your entire project folder takes months to recover from.
The math is simple. Fifteen seconds of friction per run, or hours of disaster recovery per failure. Friction wins.
Implementing Smart Friction
In Fazm, friction is contextual. The first time an agent performs a destructive action in a new app, it always asks for confirmation. After five successful identical actions, it can suggest reducing friction. But the user decides, not the agent.
Frictionlessness is a design goal for tools. Friction is a design requirement for agents.
Fazm is an open source macOS AI agent. Open source on GitHub.
- The Real Test Is What an Agent Refuses to Do - Refusal logic and safe defaults
- AI Agent Tiered Permissions - Layered access for different risk levels
- Supervised vs Unsupervised Agent Behavior Gap - Why agents behave differently unwatched