Skip to content
Back to skills

Kortix Computer

ASecurity

How to reach a user's CONNECTED COMPUTER (their laptop, desktop, or server) from a Kortix session — read/write files, run shell commands, and drive the desktop (click/type/screenshot) on that machine. A connected computer is an ACCOUNT of the project's `computer` connector, called through the same `kortix connectors` path as every other connector, with `--account` picking the machine. Load this when the task is about acting ON a specific physical computer the user has connected ("on my laptop...

  • 20,239 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 29, 2026
ai-agentsshellgit

Works with

  • cli

Security analysis

A100/100

Scanned September 29, 2026

npx -y skills add kortix-ai/suna --skill kortix-computer --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Kortix Computer?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Kortix Computer
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/kortix-ai-kortix-computer/badge)](https://www.skillsdirectory.com/skills/kortix-ai-kortix-computer)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: kortix-computer
description: How to reach a user's CONNECTED COMPUTER (their laptop, desktop, or server) from a Kortix session — read/write files, run shell commands, and drive the desktop (click/type/screenshot) on that machine. A connected computer is an ACCOUNT of the project's `computer` connector, called through the same `kortix connectors` path as every other connector, with `--account` picking the machine. Load this when the task is about acting ON a specific physical computer the user has connected ("on my laptop…", "read ~/Downloads on my machine", "run this on my desktop", "click the button on my screen"), or when the user asks how the agent reaches their computer. For files INSIDE this sandbox, use normal shell/fs — not this.
---

<skill name="kortix-computer">

<overview>
A member connects their own computer to Kortix (desktop app, or
`npx @kortix/agent-tunnel connect`). Each connected computer is one
**account** of the project's **`computer`** connector — exactly like one Gmail
mailbox is one account of the Gmail connector. You reach it with the normal
connector path (`kortix connectors accounts` → `show` → `call`); there is no
token and no tunnel client in the sandbox. The live connection is the
credential, resolved server-side.

- A **private** computer (the default) follows its owner: it is an account in
  every project they belong to, reachable only in their own private sessions.
- A **shared** computer (shared with the project) is reachable by everyone in
  the project, including unattended runs (triggers, schedules, Slack).
- The owner decides **on the computer** who may use it: *Ask each time* (a
  prompt on their screen, allowed for up to 24 hours; the default for a
  computer connected in the desktop app), *Always allowed* (the default for a
  computer connected with the CLI alone, which has no app to show a prompt),
  or *Off*. You cannot change this from the sandbox.

Tools on the `computer` connector:

- `status` — **call it first.** The selected computer's name, `online`,
  platform, capabilities, `home_dir`, `allowed_paths`, and `access`
  (`{ mode, granted_until }`: `ask`, `always`, or `off`; `null` on older
  agents). File tools only work inside `allowed_paths` (by default the user's
  home folder); start there, never at `/` or `/Users`. With `mode: 'off'`, stop
  and tell the human. With `mode: 'ask'` and no current `granted_until`, your
  first call shows them a prompt; say so before you make it.
- **filesystem** — `fs.read` / `fs.write` / `fs.list` / `fs.stat` / `fs.delete`
- **shell** — `shell.exec` (stdout / stderr / exitCode)
- **desktop** — `desktop.cua.click` / `type_text` / `press_key` / `hotkey` /
  `scroll` / `launch_app` / `list_apps` / `list_windows` / `get_screen_size` /
  `get_accessibility_tree`, plus `desktop.cua.call` (any computer-use tool by
  name)

**This is for a connected, external computer — not this sandbox.**
</overview>

<usage>
**1. List the computers you can reach.** Each account label is a machine name.

```sh
kortix connectors accounts computer
```

The slug is `computer` in most projects. An older project may use another
slug for its computer connector; `kortix connectors ls` shows it.

If there is no account, no computer is connected yet. Say so and tell the
human: **click "Connect your computer" in the project sidebar** (one click in
the Kortix desktop app, or a download / command in the browser). There is no
feature flag to turn on, and nothing to set up per project.

**2. Check the machine before real work.** Read `online` and `access`.

```sh
kortix connectors call computer status '{}' --account "Studio Mac"
```

**3. Call a tool on the machine you mean.** Pass `--account "<name>"` (or
`me` for your own default). With one reachable computer you may omit it.

```sh
kortix connectors call computer fs.read '{"path":"/Users/me/notes.md"}' --account "Studio Mac"
kortix connectors call computer shell.exec '{"command":"git","args":["status"],"cwd":"/Users/me/proj"}' --account "Studio Mac"
kortix connectors call computer desktop.cua.type_text '{"text":"hello"}' --account "Studio Mac"
kortix connectors call computer desktop.cua.call '{"tool":"double_click","args":{"x":220,"y":140}}' --account "Studio Mac"
```

`kortix connectors show computer.<action>` prints a tool's input schema.
</usage>

<errors>
Treat these as real outcomes; do not retry blind:

- `account_required` — several computers are reachable and none was named or
  pinned. Ask which one, then pass `--account`.
- `account_not_found` — `--account` (or a legacy `computer` argument) names no
  reachable computer. Use a label from `kortix connectors accounts computer`.
- `computer_access_pending` — the owner has not answered the access prompt on
  their computer yet. Tell them: **"Allow Kortix on your computer (the prompt
  on your screen), then tell me to continue."** Retry once, after they confirm.
  Never loop-retry.
- `computer_access_denied` — the owner chose Deny. Do not retry; the prompt is
  held back for 10 minutes. Ask them to allow it from the Kortix menu-bar icon
  or the "Your computer" menu, then continue when they say so.
- `computer_access_off` — the owner turned access off on the computer. Tell
  them; only they can turn it back on ("Your computer" → Access). Do not retry.
- `computer_offline` — the machine is paired but not connected. Ask the human
  to wake it or resume access in the Kortix desktop app.
- `computer_unpaired` — the account's machine was disconnected. The human must
  connect the computer again.
- `computer_capability_not_approved` — the human approved this computer
  without that capability (filesystem, shell, or desktop). They must connect
  the computer again and select it.
- `connector_not_connected` — no computer is reachable from this session.
  None is connected, or every connected computer is private to someone else
  (an unattended run reaches only computers shared with the project). With
  `--account`, the error lists `available_accounts`. Say so; do not look for
  another way in.
- `denied` — a connector policy or a grant blocks this call. Report the
  reason; do not retry.
- A call that needs approval waits for a human under the connector's policy.
  Tell them what you are doing and why.
</errors>

<rules>
- Use the `computer` connector. Never hand-roll a tunnel client or look for a
  tunnel token. There is none in the sandbox by design.
- Every error above is an answer, not a glitch. Never retry a computer call in
  a loop, and never wait-and-retry an access error on your own.
- Pick the machine deliberately. With more than one computer, name it with
  `--account`, and report which one ran (the result's `account` field).
- The computer's local config (allowed paths, blocked commands) is the hard
  ceiling. A refusal from it is final; tell the human what was blocked.
- Be careful with `fs.write`, `fs.delete`, `shell.exec`, and desktop control:
  they act on someone's real machine. Confirm intent for anything
  irreversible.
- For this sandbox's own files, use normal shell/fs, not the `computer`
  connector.
</rules>

</skill>

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…