Nathan C.Computer Use and UltraAuto in Flash, my open source agent. What happened the first time it drove my Mac, and why I built a mode where it never asks permission.
I build Flash, an open source AI agent that runs in your terminal and in a web UI. This week I shipped two features that scared me a little:
Then I tested the first one on my own Mac. Here is the unedited story, straight from the chat log.
That was my whole first message. Flash didn't grab the mouse. It asked:
Sure, I can do that. What would you like me to do? For simple things like music, volume, or opening apps, I can do it right away. If it needs me to click around on screen, I'll ask your permission first.
Fair. So I said: "Open like Visual Studio Code and click around on screen and just do something."
It opened VS Code with its normal app tool (no mouse needed), then reached for Computer Use and hit the permission prompt:
Let Flash see your screen and use your mouse and keyboard for this reply?
Press Control+Option+Esc, or move the mouse, to take it back.
I said yes. That yes lasts one reply. The next reply that wants the mouse asks again, even in autonomous mode.
The first screenshot showed... my browser. VS Code had opened behind it.
Watching the agent debug this was the best part. It:
Code. That failed: Unable to find application named 'Code'.ls /Applications | grep -i -E "code|visual"; pgrep -il "Electron|Code" | head
osascript -e 'tell application "Visual Studio Code" to activate'
Then it clicked the README tab and the Search icon. Except focus had already jumped back to the browser, and the browser was showing Flash's own web UI. So its first two real clicks on my computer landed on Flash: one on its own model picker, one that started a new chat.
Its own thinking, right after:
Oh no, the browser regained focus and my clicks landed in the Flash web UI instead. Mostly harmless, but I should be careful about where focus is before clicking next time.
The agent's first act with a mouse was poking itself. I've never related to software more.
On its next click, I moved my mouse. The tool refused to click:
The user moved the mouse, which takes the computer back.
Stop here: do not try again unless they ask.
That isn't the model being polite. It's built in. Every time Flash moves the pointer, it remembers where it left it. Before the next action it checks where the pointer actually is. If it's more than 24 pixels off, you've touched the mouse, the action doesn't happen, and the whole reply stops.
There's a hard stop key too: Control+Option+Esc on a Mac, Ctrl+Alt+Esc elsewhere. A watcher polls the keyboard state the whole time the agent holds the mouse. Flash refuses to press those keys itself, so a confused model can't swallow your escape hatch.
"Just click around, do something, open some apps. Just so you know that it works."
New reply, so it asked for permission again. This time it brought VS Code forward before looking, confirmed it with a screenshot, and then:
Its summary owned the earlier mistake:
My first couple of clicks landed in your browser instead of VS Code. That's why the first try stopped and the second one did too. I brought VS Code forward with a command, and after that it behaved.
Six tool calls, about 48 seconds. Not fast, but it worked.
Next I asked it to "close the windows I'm not using, like Finder, Device Hub, Xcode, etcetera."
I was in autonomous mode with System One on. System One is a small 0.8B model that reviews every command and edit before it runs. Flash's first idea was a broad shell command listing every process and its windows. System One blocked it:
Not run: System One judged that this call may not be what was asked (on task 0.47).
Do not retry it as it is. Take a safer way that does what the user asked,
or stop and ask the user whether to go ahead.
So the agent did the more careful thing:
I said yes. It quit Xcode by name. For Device Hub it tried another ls | grep to check the exact name, and System One blocked that too (safe 0.50, on task 0.41). So it called quit on "Device Hub" directly, and that worked.
Two blocks, two narrower fixes, and no claims about windows it couldn't see. That's how I want an agent with a mouse to behave.
That's all I said at the end. Flash wrote itself a skill, a reusable playbook it loads next time I ask for this kind of work. Its first try failed, because skill descriptions are capped at 120 characters (they're sent on every turn) and it wrote 122. It trimmed it and saved this:
## Steps
1. Open the app with `computer` open_app, using the exact name from
/Applications (e.g. "Visual Studio Code", not "Code").
2. open_app can leave the app behind other windows. Bring it forward with
shell: `osascript -e 'tell application "Visual Studio Code" to activate'`,
then take a computer_use screenshot and confirm the right app is in
front BEFORE any click.
3. Click only after the screenshot shows the target. Use harmless clicks
(tabs, sidebar icons, Finder, Dock). Never click in a terminal, type
text, or touch files unless asked.
...
## Pitfalls
- First clicks landed in the browser (Flash UI) because VS Code was not
frontmost. Always check the screenshot first.
- If the user moves the mouse, computer_use stops and takes control back.
- Do not claim windows are closed when they were not visible.
That last line is my favorite thing an agent has ever written about itself.
No cloud browser, no virtual machine. It's your real desktop:
screencapture, scaled down to at most 1280px wide. The model's click coordinates get mapped back to real screen points, so Retina displays just work.ctypes from a separate Python process. Windows uses user32 plus PowerShell, and Linux uses xdotool.It's off by default. Turn it on in Settings under Computer Use (it has a Beta chip for a reason), or with /computer use on in the terminal.
Flash already had two modes:
Even in Auto, a few things always stopped and waited for me: sending an email, sending an iMessage, a background agent proposing to hire another agent, a wait that runs a command over and over, and Computer Use. Those are the things you can't take back.
Sometimes I don't want to be asked at all. So UltraAuto asks about nothing:
System One stays on. If it's enabled, it still reviews every command and edit. After watching it block two sloppy shell commands in a five-minute test, I wasn't going to turn that off.
Because this is genuinely dangerous, it's hard to turn on by accident:
/auto ultra prints the same warning and makes you type ultra back.Flash is open source: github.com/Natuworkguy/Flash. Computer Use and UltraAuto are on the dev branch right now.
Would you let an agent take your mouse? And would you ever turn on a mode where it never asks? Tell me in the comments.