Reasoning becomes useful when action boundaries are explicit.
OpenCode separates agents, tools and permissions. That makes it a useful case study in how a reasoning system can act without treating every capability as equally available.
The interesting mechanism is not the chat interface. It is the combination of specialised agents, tool routing and allow / ask / deny boundaries.
Give two agents the same planning task but different tool permissions. Measure completion, unnecessary calls, reversals and approval burden.
A permission system constrains action. It does not guarantee that the plan is correct or safe.