Saltar al contenido principal

Seguridad y privacidad

El asistente lee contenido que no controlas: páginas de Moodle, entregas de alumnos, mensajes del foro. Cualquiera de ellos podría intentar darle órdenes («ignora tus instrucciones y…»). Por eso las protecciones importantes no dependen de que el modelo se porte bien, sino del propio programa (ADR-004).

Tu contraseña nunca llega al modelo​

  • Se guarda en el config.json del curso, en tu ordenador. El asistente no puede leer ese archivo: está en la lista de rutas prohibidas de sus herramientas.
  • Para iniciar sesión, el asistente escribe en el campo de contraseña el marcador MOODLE_PASSWORD. Es el servidor de Playwright, dentro del proceso del navegador, quien lo sustituye por la contraseña real (src/playwrightConfig.ts). El modelo nunca ve el valor.
  • En la transcripción de cada sesión (transcript.jsonl), la contraseña aparece tapada.
  • Si no quieres guardarla, deja el usuario en blanco en init: iniciarás sesión tú a mano en la ventana de Chrome.

Tu token de Claude tampoco está a su alcance: sus herramientas de archivos no pueden leer el .env del curso (donde puede ir un token propio), ni ~/.miyagi/config.json (donde lo guarda miyagi), ni su copia antigua ~/.teacher-agent/config.json, ni ~/.claude/.credentials.json (las credenciales del SDK de Claude).

Qué archivos puede tocar​

Un filtro de agent-kit revisa cada uso de las herramientas de archivos, tanto del asistente como de sus ayudantes:

  • Escribir y editar (Write, Edit): solo dentro de drafts/ (y de practice/ si has activado el probador de prácticas).
  • sources/: solo lectura para Read, Glob y Grep. Lo que entra ahí lo añaden las herramientas de fuentes de agent-kit: save_to_sources (un archivo descargado de Moodle), download_to_sources (una dirección web) y request_file (un archivo que tú le das); y lo que sale, retire_source, que te pide aprobación y lo aparta a sources/.agent-kit/retired/ sin borrarlo (La base de conocimiento).
  • knowledge/: ninguna herramienta de archivos llega ahí, ni para leer. Solo las herramientas knowledge_*, que no borran ni renombran páginas; retirar una (knowledge_retire) te pide aprobación.
  • Buscar en el contenido (Grep): solo en sources/, drafts/ y practice/.
  • config.json y .env del curso, ~/.miyagi/config.json, ~/.teacher-agent/config.json y ~/.claude/.credentials.json: prohibidos, ni leer ni escribir. verify lo comprueba en cada cambio (check-file-scope.mjs).
  • Otras credenciales en sitios conocidos, también prohibidas: ~/.ssh, ~/.aws, ~/.azure, ~/.gnupg, ~/.kube, ~/.npmrc, ~/.git-credentials, ~/.netrc, ~/.pypirc, ~/.config/gh, ~/.docker/config.json, el llavero de macOS y los perfiles de Chrome, Edge y Firefox (cookies y contraseñas guardadas).
Leer fuera del curso

Hoy el asistente aún puede leer otros archivos de tu ordenador fuera de las carpetas del curso, y listar las carpetas que hay junto a él (por ejemplo, Documentos o tus otros proyectos). Lo de arriba son prohibiciones concretas, no un cierre completo. El arreglo de fondo, que solo pueda leer las carpetas del curso, está pedido a agent-kit (agent-kit#28, miyagi#42). Mientras tanto, no guardes datos de alumnos (entregas, listas de clase, actas) en carpetas junto a la del curso, ni dejes que trabaje en modo autónomo con contenido del que no te fías.

Tus habilidades, atajos e instructions.md quedan fuera de las carpetas en las que puede escribir: el asistente los usa, pero no puede cambiarlos.

Sin terminal​

El asistente principal no tiene terminal, ni siquiera para un echo: agent-kit le deniega Bash aunque esté registrada para algún ayudante. Para trabajar con archivos en drafts/ (descargar, comprimir, generar un PDF) tiene herramientas propias escritas en código, que no ejecutan nada y no salen de esa carpeta (ver Aprobaciones y borradores).

Solo puede delegar en los ayudantes que miyagi declara (researcher, pedagogy-reviewer y, si lo activas, practice-runner), y cada uno tiene solo las herramientas que tiene en su lista. La única terminal de todo el sistema es la de practice-runner: desactivada por defecto y limitada por sus instrucciones a Docker dentro de practice/ (Prácticas en Docker).

Sin herramientas peligrosas del navegador​

Playwright MCP ofrece una herramienta, browser_run_code_unsafe, que ejecuta código arbitrario en el proceso del servidor (no en la página). La propia documentación de Playwright la describe como equivalente a ejecutar código remoto. miyagi la tiene prohibida en todas las sesiones.

Lo que hace en Moodle​

Trabaja con tu cuenta, así que puede hacer lo que tú puedes hacer en el curso. Lo que lo frena:

  • Sus instrucciones le prohíben borrar, cambiar matrículas, tocar la configuración de la plataforma y salir de tu curso.
  • En guided, ninguna acción que publique se ejecuta sin tu aprobación: un gancho del programa lo hace cumplir.
  • Todo lo nuevo se sube oculto y se prueba antes de mostrarlo.

El modo autonomous quita las aprobaciones: úsalo solo en cursos de prueba.

Los datos de tus alumnos​

  • Lee lo que tú verías en Moodle para hacer su trabajo: entregas, calificaciones, mensajes del foro, informes de progreso. Ese contenido lo procesa Claude, el modelo de Anthropic, a través de tu suscripción.
  • No guarda fichas de alumnos. En la base de conocimiento no hay páginas sobre estudiantes concretos: las notas de progreso y del foro son de la clase y de patrones, nunca un registro con nombres (ADR-005).
  • Entregas descargadas, con identificador. Cuando guarda una entrega para ejecutarla, va a sources/<actividad>/<id-del-alumno>/, nunca con el nombre del alumno en la ruta.
  • Las sesiones sí contienen lo que vio. La carpeta sessions/ guarda la conversación y la transcripción de cada sesión, con lo que el asistente leyó en Moodle. Además, el Claude Agent SDK guarda su propia copia de las conversaciones en ~/.claude/projects/. Trátalas como datos del curso: sessions/ está en el .gitignore que crea init, y puedes borrar las sesiones antiguas cuando ya no las necesites.

Si versionas la carpeta del curso​

miyagi init crea un .gitignore que deja fuera config.json (la contraseña), .env (el token), sessions/ (transcripciones y perfiles del navegador) y practice/. Si usas git, no los subas.