Objetivo del tema
Entender qué datos maneja OpenCode y dónde viven, aplicar permisos y buenas prácticas para trabajar con seguridad incluso en código sensible, y aprender a diagnosticar los fallos más comunes usando los registros y comandos de mantenimiento.
La base de confianza del proyecto es simple: OpenCode no almacena tu código ni tu contexto de trabajo en servidores ajenos. Todo el trabajo sucede entre tu máquina, tus repositorios y el proveedor de modelos que tú mismo configuras:
Sesiones, historiales y snapshots viven en tu directorio de usuario, no en una nube del fabricante del agente.
Nada se publica sin acción explítita (/share) y todo enlace se retira con /unshare.
Decides qué proveedor recibe tu código; con modelos locales, ninguno.
Matices que sí debes conocer: el contenido de archivos referenciados viaja al proveedor del modelo elegido en cada petición (así funciona cualquier LLM), y algunas tareas internas menores usan un "modelo pequeño" configurable (small_model). Para código confidencial considera modelos locales (tema 5) o revisa las opciones empresariales de residencia de datos.
El directorio de datos concentra todo lo sensible:
~/.local/share/opencode/
├── auth.json # claves API y tokens OAuth
├── mcp-auth.json # credenciales OAuth de servidores MCP
├── log/ # registros (se conservan los 10 más recientes)
└── project/ # sesiones y mensajes por proyecto
OPENCODE_AUTO_SHARE: comparte sesiones automáticamente; déjala apagada salvo necesidad concreta.opencode export --sanitize) para redactar contenido sensibles.El sistema allow/ask/deny del tema 14 es tu herramienta principal de contención. Postura recomendada por escenario:
"webfetch": "deny", bash en modo ask con excepciones mínimas (npm test*, git status*), y ediciones permitidas sólo dentro del proyecto.edit: deny) cuando el objetivo es analizar y no modificar.--auto para no bloquear el pipeline, define antes permisos explícitos que nieguen todo lo peligroso: lo no denegado será aprobado automáticamente.Checklist de seguridad rápida
auth.json tiene permisos restrictivos y está fuera de cualquier repositorio?Cuando algo falla, los registros son el primer recurso. Se escriben en ~/.local/share/opencode/log/ (en Windows: %USERPROFILE%\.local\share\opencode\log), con nombres por marca de tiempo y conservando los diez más recientes:
opencode --print-logs # logs en la propia terminal
opencode --log-level DEBUG # máximo detalle
Para un reinicio completo sin desinstalar, borra los cachés reconstruibles: ~/.cache/opencode (paquetes de proveedores) y, como último recurso, ~/.local/share/opencode (configuración y sesiones locales — perderás credenciales y deberás reautenticarte con /connect).
| Síntoma | Causa probable | Solución |
|---|---|---|
| No arranca | Error puntual o versión vieja | Revisa los logs, prueba --print-logs y actualiza con opencode upgrade. |
| Fallos de autenticación | Credenciales vencidas o red bloqueada | Reautentica con /connect; verifica clave válida y acceso de red a la API del proveedor. |
ProviderModelNotFoundError |
Identificador de modelo mal escrito | Usa el formato proveedor/modelo exacto; consulta el catálogo con opencode models. |
ProviderInitError |
Configuración inválida o corrupta | Valida la sección provider; si persiste, limpia ~/.local/share/opencode y reautentica. |
AI_APICallError |
Paquetes de proveedor desactualizados en caché | Borra ~/.cache/opencode y reinicia para re-descargar versiones vigentes. |
| Portapapeles roto en Linux | Falta utilidad de sistema | Instala xclip/xsel (X11) o wl-clipboard (Wayland). |
| Escritorio en blanco (Windows/Linux) | Runtime gráfico faltante o compositor | Windows: instala WebView2 Runtime. Linux/Wayland: prueba OC_ALLOW_WAYLAND=1 o sesión X11. |
| App de escritorio inestable al iniciar | Plugin conflictivo o caché corrupta | Vacía la clave plugin del config global, saca plugins locales y limpia el caché; reactiva uno a uno. |
Si nada funciona: el comando opencode uninstall muestra exactamente qué eliminará y admite conservar configuración (-c) o datos (-d). Y para ayuda humana, reporta en github.com/anomalyco/opencode/issues (buscando primero entre issues existentes) o entra al Discord oficial en opencode.ai/discord.
Conclusión: OpenCode ofrece una postura de privacidad sólida por defecto (datos locales, compartición opt-in) y te da las palancas para endurecerla tanto como necesites: permisos granulares, agentes de solo lectura y modelos locales. Combinado con una rutina de diagnóstico simple (logs, caché, reautenticación), podrás resolver casi cualquier incidente sin salir de la terminal. En el próximo tema compararemos OpenCode con sus competidores directos.