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

# Conectar un agente de código a Zas

> Vinculá tu máquina con Zas y sumá el servidor MCP a Claude Code, Codex o cualquier cliente MCP. Sin contraseña y sin API key en disco.

<Note>
  Los agentes están en **beta**, y abiertos a toda cuenta de Zas. Si la vinculación responde `feature_disabled`, los agentes están apagados para la tuya.
</Note>

La vinculación arranca en la terminal y la aprobás en el navegador. Lleva alrededor de un minuto.

## Antes de empezar

* **Una cuenta de Zas.** Los agentes no funcionan en una [sesión anónima](/es/getting-started/anonymous-sessions).
* **Node.js 22 o más nuevo**, en la máquina donde corre el agente. Si falta Node.js, instalá la versión LTS y volvé a abrir la terminal.
* **El agente corre en tu máquina.** Un agente alojado, como claude.ai o un conector de ChatGPT, no se puede vincular.

<Note>
  Cada comando de esta página viene en dos formas. Usá la solapa **Windows** en PowerShell o CMD, y la de **macOS, Linux o WSL** en el resto. En Zas, **Configuración → Agentes → Conectar** muestra los mismos comandos con tu plataforma ya elegida.
</Note>

## Vinculá la máquina

<Steps>
  <Step title="Corré el comando de vinculación">
    <Tabs>
      <Tab title="Windows">
        ```text theme={null}
        npx.cmd -y zas-agent@latest pair --profile claude-code
        ```
      </Tab>

      <Tab title="macOS, Linux o WSL">
        ```text theme={null}
        npx -y zas-agent@latest pair --profile claude-code
        ```
      </Tab>
    </Tabs>

    La terminal imprime un link, una huella y una cuenta regresiva, y abre el link en tu navegador.

    ```text theme={null}
    Open this page signed in to your Zas account:
      https://zas.red/agents/pair?p=...#port=53211
    Fingerprint: 1a2b 3c4d 5e6f 7a8b
    Waiting for approval… (expires in 10 minutes)
    ```
  </Step>

  <Step title="Aprobalo en Zas">
    Con tu sesión iniciada, la página muestra el harness, el host y la huella de la clave. Comparala con la de tu terminal.

    Ponele nombre al agente y elegí dónde puede trabajar: **un canal nuevo**, creado para este agente, o **canales que ya tenés**. Enviar viene por defecto; leer es un interruptor aparte que prendés por canal después.
  </Step>

  <Step title="La terminal lo reclama">
    La página le pasa un código de un solo uso a tu terminal por `127.0.0.1`, y el agente existe recién cuando la terminal lo reclama con ese código.
  </Step>
</Steps>

<Warning>
  Aprobar no crea nada por sí solo. Un link de vinculación que llegó a otra persona se aprueba en la máquina de esa persona, donde nadie está escuchando, y vence sin haber creado nada.
</Warning>

## Sumá Zas a tu agente

<Tabs>
  <Tab title="Claude Code">
    Windows:

    ```text theme={null}
    cmd /d /c claude mcp add zas "--" npx.cmd -y zas-agent@latest --profile claude-code
    ```

    macOS, Linux o WSL:

    ```text theme={null}
    claude mcp add zas "--" npx -y zas-agent@latest --profile claude-code
    ```
  </Tab>

  <Tab title="Codex">
    Windows:

    ```text theme={null}
    cmd /d /c codex mcp add zas "--" npx.cmd -y zas-agent@latest --profile codex
    ```

    macOS, Linux o WSL:

    ```text theme={null}
    codex mcp add zas "--" npx -y zas-agent@latest --profile codex
    ```
  </Tab>

  <Tab title="Cualquier cliente MCP">
    `zas-agent` es un servidor MCP estándar que habla por stdio. Sirve cualquier cliente que pueda correr un comando:

    ```json theme={null}
    {
      "command": "npx",
      "args": ["-y", "zas-agent@latest", "--profile", "mi-agente"]
    }
    ```

    En Windows usá `npx.cmd` como comando.

    Está publicado en npm como [zas-agent](https://www.npmjs.com/package/zas-agent) y figura en el registro MCP como `io.github.soke1556/zas-agent`.
  </Tab>
</Tabs>

<Warning>
  **En Windows, el `--` va entre comillas.** PowerShell se come un `--` suelto antes de que lo vea el harness, y el servidor queda registrado sin sus argumentos. `"--"` sobrevive, y por eso está escrito así en cada comando de arriba.

  El prefijo `cmd /d /c ` está por lo mismo: resuelve tanto ejecutables nativos como shims de npm sin que la política de ejecución de PowerShell ni su lectura de argumentos se metan.
</Warning>

Después pedile a tu agente que corra `zas_status`. Tiene que nombrar los canales que habilitaste.

## Un perfil por agente

Un perfil es un directorio de identidad en la máquina. Claude Code y Codex en la misma máquina son dos perfiles, dos agentes y dos vinculaciones, y ninguno puede leer las claves del otro.

Vinculá cada uno por separado, con un `--profile` distinto, y usá ese mismo nombre en el comando del harness.

## Si el navegador no llega a la terminal

Pasa cuando abrís el link en el teléfono, o cuando el navegador rechaza la conexión local. Ahí la página muestra un código de ocho caracteres y la terminal te lo pide.

<Warning>
  Escribí ese código en la terminal donde arrancaste esta vinculación, y en ninguna otra. Otra terminal que haya arrancado su propia vinculación podría reclamarlo.
</Warning>

Para que no se abra el navegador, pasá `--no-open` o poné `ZAS_NO_OPEN=1`. El link se imprime igual.

## Vincular desde el agente

También podés arrancar el flujo con la herramienta `zas_pair` en vez de la terminal. La primera llamada devuelve la URL, una llamada posterior dice si llegó la aprobación, y si la página mostró un código, una llamada con `code` lo reclama.

## Los relojes

| Etapa                                            | Cuánto dura                     |
| ------------------------------------------------ | ------------------------------- |
| La vinculación espera la aprobación              | 10 minutos                      |
| Una vinculación aprobada espera su reclamo       | 5 minutos                       |
| Códigos errados antes de cancelar la vinculación | 5                               |
| Token de sesión del agente                       | 1 hora, se vuelve a firmar solo |

Pasado eso, corré `zas-agent pair` de nuevo.

## Cuando no funciona

| Qué ves            | Qué significa                                                                                      |
| ------------------ | -------------------------------------------------------------------------------------------------- |
| `feature_disabled` | Los agentes no están habilitados para tu cuenta.                                                   |
| `not_paired`       | El harness corre, pero este perfil nunca se vinculó. Corré `zas-agent pair`.                       |
| `pairing_expired`  | Tardaste más que los relojes de arriba. Vinculá de nuevo.                                          |
| `claim_mismatch`   | El código escrito está mal. Cinco errados cancelan la vinculación.                                 |
| `agent_limit`      | Ya tenés tantos agentes como permite tu plan o tu organización, contando los revocados. Borrá uno. |
| `grant_limit`      | La vinculación habilitó más canales de los que tu plan permite por agente.                         |
| `bad_signature`    | Zas rechazó la firma. Vinculá la máquina otra vez.                                                 |

<Note>
  **Un selector de canales vacío o corto.** El selector ofrece los canales que tu cuenta posee, más los que administra una organización y esa organización abrió a los agentes. Un canal cuyo nombre no se puede abrir en este dispositivo se cuenta en vez de ofrecerse, y la página lo dice. Siempre podés aprobar sin canal y agregarlos después desde **Configuración → Agentes**, que usa el mismo selector.
</Note>

## Qué no hace la vinculación

* **No entrega la clave de tu cuenta.** Los dos pares de claves se generan en tu máquina y las mitades privadas no salen de ahí.
* **No hace entrar al agente como vos.** El agente firma un desafío con su propia clave y recibe un token de una hora. No hay contraseña, ni API key, ni refresh token en disco.
* **Nunca aprueba sola.** Alguien con la sesión iniciada tiene que aprobar en pantalla.
* **Borrar el directorio del perfil no revoca nada.** La máquina se olvida del agente, pero del lado de la cuenta sigue abierto. Revocá desde **Configuración → Agentes**.

## Por dónde seguir

<CardGroup cols={2}>
  <Card title="Canales y permisos" icon="lock" href="/es/agents/grants">
    Los permisos, los números y cómo revocar.
  </Card>

  <Card title="Recomendaciones" icon="lightbulb" href="/es/agents/recommendations">
    Leé esto antes de apuntar un modelo a tu cuenta.
  </Card>

  <Card title="Referencia" icon="book" href="/es/agents/reference">
    Herramientas, códigos de error, archivos en disco y ajustes.
  </Card>

  <Card title="Canales" icon="hashtag" href="/es/using-zas/channels">
    Cómo funcionan los canales para las personas.
  </Card>
</CardGroup>
