Agent tools
The agent does not only talk. It reads, searches, patches, and — when you allow it — runs shell and git.
Eyeban ships a full tool surface inside a native workbench. The cloud agent calls tools; you see the trail and review the patch.
What it can do
- Read, write, and patch files with reviewable diffs
- Grep, glob, list, and semantic search over the workspace
- Shell with a real PTY session, plus Await for long commands
- Git status, diff, stage, commit, and push when permitted
- LSP diagnostics and lints
- Web search and fetch for docs and public pages
- MCP tools you attach, plus Computer Use on Windows
Guardrails
Ask, Allow safe, and Allow all decide what runs. Plan and Ask modes block mutating tools. Nothing is silent.
What this is not
There is no cloud VM agent, no plugin store, and no “run the whole OS unsupervised” mode. Tools execute on your machine, under your permissions.
The Tools docs page lists the same surface the agent actually has.
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)