# Agentes

Cómo lee un agente, cómo propone, qué hace falta para que acepte — y cómo ves cada vez que lo hace.

## Propuestas, no escrituras

Un agente con `notes:write` no puede modificar una nota directamente. Escribe en un contenedor de sugerencias hermano y tú recibes una diferencia revisable. Aceptar es una transacción aparte: tuya, desde una sesión iniciada, o del propio agente, pero solo con un token que creaste con el scope `turns:accept`.

Ese scope es una concesión, no un ajuste. Ningún otro scope lo implica, nunca forma parte de la concesión por defecto de la CLI y solo una persona puede crear un token que lo lleve. Un agente solo puede aceptar turnos que abrió él mismo, y solo prosa: los enlaces y los eventos de calendario propuestos te esperan a ti en todos los casos.

La razón por la que el valor por defecto es solo proponer es propia de cómo sincroniza Fastpad. Una edición confirmada en una nota es duradera y está en todos tus dispositivos de inmediato. Si una página web envenenada o una nota maliciosa dirigieran al agente, el texto inyectado estaría en todas partes antes de que nadie viera una diferencia — y ninguna interfaz puede retirar bytes que ya están en un segundo dispositivo. Conceder la aceptación es decidir tú que ese riesgo merece la pena para ese token, por su nombre, y el rastro que sigue es lo que recibes a cambio.

## Revisar una propuesta

Una propuesta llega a tu bandeja de entrada y a una URL propia. Ves una diferencia bloque a bloque: qué leyó el agente, en qué quiere convertirlo y de qué bloques dice haberlo sacado.

1. Aceptar: el cambio se aplica, queda marcado como revisado por ti y las fuentes citadas se convierten en enlaces reales.
2. Aceptar una parte: el resto queda pendiente.
3. Rechazar o abandonar: nunca se aplicó nada, así que no hay nada que deshacer.
4. Revertir, más tarde: deshace la propuesta entera como una unidad y conserva cualquier edición que hicieras encima.

> **Note:** Si editaste el texto mientras la propuesta esperaba, aceptar se niega a sobrescribirte. Recibes una fusión a tres bandas: tu versión nunca se descarta en silencio.

Cuando un agente acepta su propia propuesta, lo ves después en lugar de antes. La página de actividad de agentes, en `/agent-activity` dentro de la app, lista cada turno que llegó a una nota con la autoridad de un agente — aceptado con `turns:accept`, o aplicado automáticamente — con quién lo hizo, qué notas tocó y cuántos bloques. Cada aceptación se escribe además en el registro de auditoría, a nombre del agente y del token que la hizo.

- Marcar como revisado: los bloques que aceptó el agente pasan a revisados por ti, el mismo estado que recibe una propuesta que aceptaste tú. Los bloques aplicados automáticamente siguen sin revisar; el turno sale igualmente de la cola.
- Revertir: deshace el turno entero como una unidad y conserva cualquier edición que hicieras encima. Revertir es solo tuyo: ningún token de ningún scope puede hacerlo.
- Abrir la diferencia: la misma vista bloque a bloque que tiene una propuesta pendiente.

## Hasta dónde llega un token

Un token se resuelve a un conjunto concreto de notas cuando se crea, nunca a una consulta de etiquetas en vivo. De lo contrario, un agente con `notes:write` podría ampliar su propio alcance simplemente etiquetando una nota que quisiera leer.

| Scope | Concede |
| --- | --- |
| `notes:read` | leer el cuerpo de las notas |
| `notes:propose` | crear propuestas — nunca aplicarlas |
| `notes:write` | escribir contenido de nota directamente (propiedades, tipos, comentarios) |
| `notes:delete` | enviar a la papelera y restaurar |
| `search:read` | buscar, y con ello títulos y fragmentos |
| `graph:read` | recorrer enlaces |
| `schema:write` | definir tipos de nota y sus propiedades |
| `export` | descargar el espacio de trabajo entero como Markdown |
| `turns:accept` | aceptar sus propias propuestas; cada aceptación se lista para que la revises |

Aceptar está en esa lista, y nada más en ella lo implica: un token con todos los demás scopes sigue sin poder aceptar. Lo que no está en la lista, ni puede estarlo, es revertir, revisar, publicar y verificar — eso necesita a una persona con sesión iniciada.

## La confianza son dos preguntas, no una

Cada pieza de contenido lleva de dónde vino y si una persona la ratificó. Son ejes separados, y mantenerlos separados es lo que distingue «un agente escribió esto y yo leí la diferencia» de «un agente escribió esto y nadie lo miró».

| Origen | Significa |
| --- | --- |
| `human_typed` | lo escribió una persona, o una terminal que tenía en las manos |
| `agent_written` | lo redactó un agente |
| `inbound_untrusted` | llegó de fuera de una pulsación de tecla: una captura, una importación, un correo |

Por defecto, un agente que busca en tu espacio de trabajo solo ve contenido escrito por una persona. El texto que escribió un agente y nadie revisó queda excluido, igual que todo lo no confiable. Un agente tiene que pedir explícitamente un umbral más bajo.

Un bloque que un agente aceptó con `turns:accept` lleva el estado de revisión `agent_accepted`. No se trata como revisado por una persona: todos los umbrales de confianza por encima del más bajo lo excluyen exactamente igual que al texto de agente sin revisar, así que un agente no puede ratificar su propio trabajo hasta convertirlo en lo que al siguiente agente se le presenta como un hecho establecido. Solo pasa a `human_accepted` cuando marcas el turno como revisado.

## Autonomía, para los casos que la merecen

A un token se le puede dar aplicación automática, limitada a su conjunto de notas o a todo el espacio de trabajo. Sus cambios aterrizan entonces sin revisión — y quedan marcados como no revisados para siempre, de modo que el coste de esa decisión es visible en los datos y no solo en una página de ajustes.

La aplicación automática y la aceptación son concesiones distintas. La primera se salta la propuesta por completo; la segunda ratifica una que se hizo. Ninguna convierte un token en una persona: una aceptación queda marcada como de un agente, una escritura automática queda marcada como sin revisar, las dos aparecen en la página de actividad de agentes, y revertir cualquiera de ellas es cosa tuya.
