> ## Documentation Index
> Fetch the complete documentation index at: https://docs.asteroid.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Capabilities

> Control what an Agent node is allowed to do

Every [Agent node](/fundamentals/nodes/agent) declares a `capabilities` object: three switches that decide what the node is allowed to do during execution.

You don't pick individual tools. Asteroid selects the right toolset from these switches and from the workflow's [environment](/fundamentals/environments), so the agent always gets tools that work where it is running.

***

## The three capabilities

<CardGroup cols={1}>
  <Card title="Browser use" icon="globe" horizontal>
    Navigate and interact with web pages (`browser_use`)
  </Card>

  <Card title="Computer use" icon="desktop" horizontal>
    Vision-based mouse and keyboard control (`computer_use`)
  </Card>

  <Card title="Ask user question" icon="comment" horizontal>
    Pause mid-run and ask the user for input (`ask_user_question`)
  </Card>
</CardGroup>

In `settings.yaml`, all three are required on every Agent node:

```yaml theme={null}
label: "Submit Form"
type: agent
capabilities:
  browser_use: true
  computer_use: false
  ask_user_question: true
model: asteroid-balanced
```

### Browser use

Gives the node the browser toolset — navigating, clicking, typing, filling forms, reading page content, and capturing snapshots. This is the default way agents work on the web.

Turn it on when the node drives a website. It is enabled by default on browser environments.

### Computer use

Gives the node vision-based control of a full desktop: it looks at the screen and moves the mouse and keyboard directly, rather than working through the DOM.

Use it for native applications, or for pages that a DOM-based approach cannot handle. It is slower and more expensive than browser use, so prefer browser use when both would work.

### Ask user question

Lets the node stop and ask a person for input in the middle of a run — a missing value, a decision, a confirmation. The execution moves to `paused_by_agent` until someone answers. See [Execution statuses](/fundamentals/execution-statuses).

Turn it on for workflows with a human in the loop. Leave it off for unattended runs, where a paused execution has nobody to answer it.

***

## Environment gating

Browser use and computer use are resolved against the workflow's environment, and the environment wins:

| Environment      | `browser_use`  | `computer_use` |
| ---------------- | -------------- | -------------- |
| Browser          | On by default  | Off by default |
| Linux or Windows | **Always off** | **Always on**  |

<Warning>
  On a Linux or Windows environment, setting `browser_use: true` has no effect. If a capability toggle looks like it is being ignored, check the environment first.
</Warning>

***

## Always available

Some tools are not capabilities and never need enabling. They are exposed to every Agent node, and each becomes usable once its own prerequisite is met:

<CardGroup cols={2}>
  <Card title="Google Sheets" icon="table" horizontal>
    Read and write spreadsheet data. Needs `browser_use`, and the sheet open in the active tab.
  </Card>

  <Card title="Two-factor codes" icon="key" horizontal>
    Generate TOTP codes. Needs a TOTP secret stored as a credential on the agent profile.
  </Card>

  <Card title="Email" icon="envelope" horizontal>
    Send and read mail. Needs an agent profile attached, since the inbox belongs to the profile.
  </Card>
</CardGroup>

<Info>
  These are skills rather than capabilities: there is no toggle to turn them on, but they only work where their prerequisite holds. An agent that cannot use one will tell you which prerequisite is missing rather than guess. See [Agent Profiles](/fundamentals/profiles) and [Emails](/fundamentals/emails).
</Info>
