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

# Work environments

> Choose no compute, a SessionSandbox, or a future durable Computer from provider-neutral requirements.

A work environment describes the compute and state an agent task needs. Start
with the smallest environment that fits the product:

* `conversation_only` uses model calls and connected tools without allocating a
  machine.
* `sandbox_ephemeral` uses the Session's existing SessionSandbox for shell and
  file work.
* Durable, visual, shared, or connected requirements resolve to a Computer.

Presets are conveniences. The resolver returns the normalized requirements, so
you can inspect the exact placement, isolation, network, retention, recovery,
and resource request before any allocation.

## Resolve an environment

The resolver is read-only. It does not create a Session, reserve usage, wake a
machine, or contact a provider.

<CodeGroup>
  ```bash cURL theme={"theme":{"light":"github-light","dark":"github-dark"}}
  curl --request POST \
    "https://api.checkfu.com/v1/work-environments/resolve" \
    --header "Authorization: Bearer $CHECKFU_API_KEY" \
    --header "Checkfu-Version: 2026-08-27" \
    --header "Content-Type: application/json" \
    --data '{
      "input_type": "preset",
      "preset": "sandbox_ephemeral"
    }'
  ```

  ```ts TypeScript theme={"theme":{"light":"github-light","dark":"github-dark"}}
  const resolution = await checkfu.workEnvironments.resolve({
    input_type: "preset",
    preset: "sandbox_ephemeral",
  })

  console.log(resolution.resolved_kind) // "session_sandbox"
  ```
</CodeGroup>

The same endpoint accepts explicit requirements when a preset is too broad.
Invalid combinations return a typed validation error. Valid Computer intent
can return a successful response with `disposition: "refused"` and stable
reasons when no provider can meet the request.

## Product minimums

These rows come from the same pinned manifests used by Checkfu's product
acceptance checks.

| Product shape              | Minimum preset      | Resolver result                                          | Minimum resolution |
| -------------------------- | ------------------- | -------------------------------------------------------- | ------------------ |
| Team Assistants            | `conversation_only` | No compute                                               | Resolves           |
| Personal Assistants        | `conversation_only` | No compute                                               | Resolves           |
| Coding Agent Orchestrators | `sandbox_ephemeral` | SessionSandbox                                           | Resolves           |
| Multiplayer AI Workspaces  | `conversation_only` | No compute                                               | Resolves           |
| Agent Builders             | `conversation_only` | No compute                                               | Resolves           |
| Agent Native Applications  | `conversation_only` | No compute                                               | Resolves           |
| Bot reference              | `browser_isolated`  | Computer requested; refused with `no_qualified_provider` | Refuses            |

The Bot reference row is intentionally unavailable today. Checkfu does not
substitute a SessionSandbox or weaken browser, durability, or Screen
requirements to make it pass.

## Create a direct Session

Direct Session creation accepts the same optional `work_environment` input. It
freezes the normalized, allocation-free decision in the Session and its
`session.admitted` event. `conversation_only` resolves to no additional compute,
while `sandbox_ephemeral` keeps the existing SessionSandbox execution path.

Computer intent currently refuses before the Session is created because no
qualified Computer provider is installed. Installed and template Session modes
do not yet accept this field. Omitting it preserves the existing Session
resource and event shape.

Resolution explains the intended path; it does not authorize later allocation.
Checkfu still re-evaluates live authorization, policy, approval, usage,
retention, locality, and provider evidence before waking paid compute.

See [capability status](/getting-started/status) before depending on a managed
runtime in production.
