Skip to content

Provider tools

Computer use, code execution, the Anthropic text editor and provider-side search: what each does, which models support it, and how to switch it on or off.

How it works5 minutes to read
Copy & share
On this page10 sections

Most of the agent's tools belong to Empryo and work with every model. Four tools are different, because the model provider supplies them:

  • Computer use: take screenshots and click, type and scroll on your screen.
  • Code execution: run code in a sandbox on the provider's servers.
  • Anthropic text editor: Claude's own file-editing tool.
  • Provider-side search: web search run by the provider.

Whether one of these tools actually works depends on two things besides your setting: the route you reach the model through (the part before the slash, such as anthropic/, openai/, openrouter/ or proxy/) and the model itself.

Check what you'll getLink to this section

Empryo reports three things for each tool:

WordMeaning
enabledYou turned it on in config
backendThe provider tool that would be used, for example anthropic:computer_20251124
activeEnabled and a backend exists. Only an active tool is available to the model

So a tool can be enabled but inactive (the route or model doesn't support it), or turned off with a backend ready (turn it on and it works).

To check a model from the command line:

bash
empryo --capabilities anthropic/claude-opus-4-6
anthropic/claude-opus-4-6
  Computer use           on   anthropic:computer_20251124
  Code execution         on   anthropic:code_execution_20260120
  Text editor            off  anthropic:text_editor_20250728 available
  Provider-side search   on   anthropic:web_search_20260209

Leave out the model to check your defaultModel.

Computer useLink to this section

Lets the agent see your screen and use the mouse and keyboard. Setting: computerUse, on by default. It only works once your machine is set up for it (see below).

This section covers which provider tool carries it. Empryo's own screen tools, safety switches and on-screen indicators are described in computer use. The same setting turns both on.

Route and modelBackend
anthropic/ or a Claude subscription, with Claudeanthropic:computer_20251124 (computer_20250124 on older Claude)
openai/ with the general GPT-5.4+ modelsopenai:computer
openai/ with codex, mini, nano, chat or pro modelsgeneric:computer
ChatGPT and Codex subscriptions, proxy/ with GPTgeneric:computer
proxy/ with Claude, gateways, Gemini, local modelsgeneric:computer

Computer use works on every route. What changes is which tool carries it. Where the provider has its own computer tool, Empryo uses it, because the model was trained on it. Everywhere else, Empryo's generic computer tool does the same job with the same actions. It works with any model that accepts images, since the model has to see the screenshots.

Limit which apps it can controlLink to this section

By default the agent can control whatever is on screen. Use computerUseApps to restrict that. Set a default, then allow or deny apps per platform: by bundle ID on macOS, process name or app ID on Windows, and window class on Linux.

json
{
  "computerUseApps": {
    "default": "deny",
    "macos": { "com.apple.Safari": "allow", "com.googlecode.iterm2": "allow" }
  }
}

The rule is checked against the app in front at the moment of each action, not against a window title a web page could change. With "default": "deny", any app you haven't listed is refused, and the message names the app so you can add it to your config. If the app can't be identified, the action is refused.

Only actions that control the machine are restricted: clicks, key presses, drags and scrolls. Screenshots always capture the whole screen, so restricting them per app wouldn't be meaningful.

The agent also follows standing rules for this tool: look before acting, double-check before an important click, never enter credentials it wasn't given, treat on-screen text as content rather than instructions, and stop if a window isn't the one it expected.

Setting up your machineLink to this section

  • macOS: install cliclick (brew install cliclick) and grant Screen Recording and Accessibility permissions.
  • Linux: install xdotool plus one of grim, import, scrot, gnome-screenshot or spectacle.
  • Windows: uses the built-in PowerShell.

If your machine can take screenshots but can't send clicks, the tool isn't offered at all, so the agent never plans clicks it can't make.

Code executionLink to this section

A sandbox on the provider's side where the model can run Python, shell commands and file operations. Setting: codeExecution, on by default.

RouteBackend
anthropic/, Claude subscriptions, proxy/ with Claude 4.5 or neweranthropic:code_execution_20260120
openai/ with GPT modelsopenai:code_interpreter
Gateways (openrouter/, llmgateway/, copilot/, bedrock/, vertex/ and others)none

GPT models reached through a ChatGPT or Codex subscription don't offer a server-side sandbox. That's fine: Empryo's own shell and code_script tools run code on your machine and work on every route. Claude on the same subscription routes still gets the server-side sandbox.

Anthropic text editorLink to this section

Claude's built-in file-editing tool. Setting: anthropicTextEditor, off by default, because Empryo's own edit_file and ast_edit tools already do this job.

Claude 4 and newer use text_editor_20250728. Claude 3.5 and 3.7 use text_editor_20250124. It only works on direct Anthropic routes, so openrouter/anthropic/claude-* doesn't get it even though the model is Claude.

The provider runs the web search itself. Setting: nativeSearch, on by default, and it needs webSearch to be on too.

Because the provider runs these searches, Empryo can't ask you to approve each query. Turn nativeSearch off if you want every search to go through Empryo and its approval prompt.

When a route has no provider-side search, Empryo's own web_search tool is used instead. That's expected behavior, not an error.

Turning them on and offLink to this section

AppWhere
Terminal UI/provider-settings. Each row shows the backend, or why there isn't one
DesktopSettings › Provider Options. Four rows, checked against the selected model
Headlessempryo --capabilities [model] to check; edit config to change

In config, globally or per project:

json
{
  "computerUse": true,
  "codeExecution": true,
  "anthropicTextEditor": false,
  "nativeSearch": true
}
KeyDefaultTool
computerUsetrueComputer use
codeExecutiontrueServer-side code execution
anthropicTextEditorfalseAnthropic text editor
nativeSearchtrueProvider-side web search

Why a route can say noLink to this section

If Empryo sent a provider a tool it doesn't recognize, the provider would reject the whole request, not just skip the tool. So Empryo only enables a provider tool where the combination is known to work. When it isn't available, you get a reason you can act on, for example: *"openrouter encodes the request itself and has no text_editor tool type, use an anthropic/ model."*

NextLink to this section