Terminal
A real terminal in the workbench, and a stateful shell the agent can drive — with sandbox and permission prompts.
Eyeban is not a chat box with a fake command preview. The workbench has an integrated terminal. The agent’s Shell tool uses a persistent session (ConPTY on Windows, Unix PTY elsewhere) so cd, env, and long jobs survive across calls. Await waits on those jobs.
Why it sells
Agents that cannot run tests, formatters, or git stay at “suggested code.” A PTY shell is how the agent closes the loop on your machine.
Controls
Sandbox levels Off / Soft / Restricted apply. Ask / Allow safe / Allow all still gate the command. Plan and Ask modes will not let the agent mutate the product through the shell.
Limits
This is OS-level rlimits / job objects — not AppContainer or landlock. Treat Restricted as a seatbelt, not a multi-tenant jail.
Headless CLI can drive the same terminal and agent entry points from the desktop binary.
41 def charge(order, wallet): 42 tax = order.subtotal * 0.09 43 total = order.subtotal + tax 44 if wallet.balance < total: 45 raise InsufficientFunds(total) 46 wallet.debit(total) 47 return Receipt(order.id, total)
Split regional tax from the hardcoded rate, and check coverage before debit.
Read 6 files · 2 searches · 1 test
charge still hard-codes 0.09. tax_for(region) exists. I will wire can_cover to the wallet.
12-line patch across two files. Review the diff.
Before touching checkout, write the approach for multi-region tax.
Plan · product shell and edits are limited
Freeze the tax_for contract, then change charge, then update test_charge.
Plan is ready. I switch to Agent after you confirm.
Where does charge take tax from, and which test pins it?
Ask · read only
The rate is checkout.py:42. test_charge asserts the same 0.09.
Nothing was written.
InsufficientFunds also fires for tax-exempt orders. Evidence first.
Debug · reproduce before the fix
It fails when the region is exempt and wallet.can_cover still sees the flat rate.
Failure trail is ready. The fix waits for your OK.
- tax = order.subtotal * 0.09 + tax = order.tax_for(region) - if wallet.balance < total: + if not wallet.can_cover(total, region): wallet.debit(total)