8. Modo Plan y modo de edición directa

Objetivo del tema

Dominar los modos de trabajo de Claude Code —normal, ediciones automáticas y Plan—, aprender a alternar entre ellos con Shift+Tab, adoptar el flujo profesional de planificar antes de construir y conocer cuándo tiene sentido cada modo.

8.1 Los modos de permisos: el interruptor Shift+Tab

Durante una sesión interactiva siempre hay un modo de permisos activo que define cuánta autonomía tiene el agente. Pulsando Shift+Tab ciclas entre ellos; el modo vigente se muestra en la línea de estado:

Los modos de permisos de Claude Code
Modo Ediciones de archivos Comandos de terminal Uso típico
Normal (predeterminado) Piden aprobación (o regla de allow previa). Piden aprobación (o regla de allow previa). Trabajo diario con control total.
Ediciones automáticas Se aplican solas. Siguen pidiendo aprobación según reglas. Iteración fluida revisando el diff al final.
Plan Prohibidas. Solo lectura. Analizar, diseñar y revisar sin tocar el código.

Idea clave: la diferencia entre modos no está en el modelo ni en la inteligencia disponible, sino en los permisos. El mismo Claude que planifica en Plan es el que edita en modo normal; lo que cambia es cuánto puede hacer sin preguntar.

8.2 Modo normal: aprobación consciente

El modo normal es el punto de partida. Cada vez que el agente quiere editar un archivo o ejecutar un comando sensible, muestra exactamente qué hará y espera tu decisión: aprobar una vez, aprobar siempre esa acción en la sesión, o rechazar con una indicación alternativa.

  • Transparencia total: antes de cada cambio ves el diff o el comando completo; nada ocurre a ciegas.
  • Aprendizaje de reglas: cuando eliges "permitir siempre", la decisión queda registrada y no vuelve a preguntarse por esa acción.
  • Complemento con reglas persistentes: las listas allow/ask/deny configuradas en el proyecto (tema 14) se aplican también aquí; el modo normal simplemente es el estado donde cada cosa no reglada se consulta.

Es el modo recomendado mientras aprendes: cada aprobación es una oportunidad para leer código y entender lo que el agente propone.

8.3 Modo Plan: pensar antes de escribir

El modo Plan convierte a Claude Code en un asesor de solo lectura: puede explorar el repositorio, buscar patrones, leer documentación y ejecutar comandos sin efectos secundarios, pero no edita archivos ni ejecuta acciones que modifiquen el proyecto. Al final del análisis presenta un plan concreto y espera tu aprobación para implementarlo.

Es el modo ideal para:

  • Tareas grandes: nuevas funcionalidades, refactors de alcance medio o migraciones que convienen acordar por fases.
  • Código desconocido: entender cómo está resuelta una parte antes de proponer cambios; la exploración es gratuita porque no hay riesgo.
  • Revisiones y second opinions: analizar una propuesta, un bug complejo o los riesgos de una decisión arquitectónica.
  • Trabajo en equipo: el plan resultante puede copiarse a un issue o pull request para discutirlo antes de escribir una línea.

Dentro de Plan combina muy bien con el razonamiento extendido del tema 5: pide think hard o ultrathink para problemas difíciles y espera preguntas de aclaración: un buen agente en modo Plan pregunta antes de suponer.

8.4 El flujo recomendado: planificar, iterar, construir

Para funcionalidades que van más allá de un arreglo puntual, el flujo con mejores resultados tiene tres etapas:

1. Planificar (Shift+Tab → Plan)

Describe la funcionalidad con detalle y deja que el agente explore y proponga. Ejemplo: "cuando un usuario borra una nota, marcarla como eliminada en la base y crear una pantalla de eliminadas con opción de restaurar o borrar definitivo".

2. Iterar el plan

Responde con correcciones y contexto extra: referencias con @, capturas arrastradas a la terminal, restricciones de diseño. Para tareas grandes, pide que guarde el plan en un archivo Markdown: queda como especificación ejecutable.

3. Construir (aprobación)

Al presentar el plan, elige continuar con ediciones automáticas o aprobación manual. El agente ejecuta, corre los tests y reporta resultados; los checkpoints quedan como red de seguridad.

Habla con él como a un compañero del equipo: cuanto más contexto (ejemplos, imágenes, archivos de referencia), menos idas y vueltas. Y si el plan aprobado es extenso, permite la ejecución por fases: cada fase termina con tests en verde y un commit.

8.5 Modo de ediciones automáticas: velocidad con red de seguridad

El segundo modo con Shift+Tab acepta automáticamente las ediciones de archivos mientras deja los comandos de terminal gobernados por sus reglas. Es el punto dulce para:

  • Implementar un plan ya acordado: el diseño está cerrado; la mecánica de aprobar cada archivo solo agrega fricción.
  • Tareas repetitivas de edición: renombres, actualizaciones de firmas, cambios de configuración propagados por decenas de archivos.
  • Sesiones de tests: escribir y corregir pruebas en serie manteniendo la validación por comando.

La red de seguridad en este modo son los checkpoints (tema 7): ante cualquier dirección equivocada, doble Esc y el proyecto vuelve al estado previo. Velocidad y reversibilidad no tienen por qué estar reñidas.

8.6 ¿Cuál uso en cada situación?

Elección de modo según la tarea
Situación Modo sugerido Motivo
Agregar una feature compleja Plan → ediciones automáticas Primero alinear diseño, después ejecutar sin fricción.
Corregir un bug puntual Normal Cambio acotado; aprobar cada paso mantiene el control.
Entender un módulo ajeno Plan Análisis seguro sobre código que aún no quieres tocar.
Refactor de gran alcance Plan → fases con commits El plan por fases permite revisar antes de cada paso.
Escribir tests o documentación Ediciones automáticas Tareas aditivas de bajo riesgo con revisión final del diff.
Revisar un pull request ajeno Plan Comentarios y análisis sin riesgo de modificar nada.

8.7 Arrancar directamente en un modo

No siempre conviene empezar en modo normal. Dos mecanismos fijan el modo inicial:

claude --permission-mode plan        # abre la sesión en modo Plan
claude -c --permission-mode plan     # retoma la última sesión en Plan

O de forma persistente, en el archivo settings.json del proyecto o del usuario:

{
  "permissions": {
    "defaultMode": "acceptEdits"
  }
}

Esto es útil, por ejemplo, para Equipos que acuerdan "toda sesión empieza en Plan" como política, o para sesiones de refactor donde ya se presupuesta iteración rápida. El modo sigue cambiándose al vuelo con Shift+Tab: lo que fija la configuración es solo el punto de partida.

Mirando adelante: existe un cuarto estado llamado bypassPermissions, que omite todas las aprobaciones. No se activa con Shift+Tab sino con el flag --dangerously-skip-permissions, y su lugar natural son contenedores y entornos de CI aislados, nunca tu máquina con código de producción. Lo veremos junto a la automatización en el tema 18.

8.8 Disciplina de trabajo con modos

  • Planifica lo desconocido, ejecuta lo mecánico: si no sabes cómo está resuelto el problema, Plan; si la tarea es un "sigue el patrón existente", directo a ejecutar.
  • Un commit por tarea: antes de cada tarea grande, un estado limpio en Git; el diff del agente se revisa y se confirma como unidad.
  • Revisa los diffs siempre: tanto en modo normal como con ediciones automáticas, el diff final es tu código: léelo con el mismo rigor que un pull request externo.
  • Checkpoint antes de lo irreversible: migraciones de base de datos, cambios de infraestructura o comandos destructivos merecen un punto de control y aprobación manual, siempre.
  • Enseña con el rechazo: cuando rechaces una acción, indica por qué; esa corrección inmediata es la forma más rápida de alinear al agente, y si el aprendizaje es permanente, la guardas con # en la memoria.

Conclusión: los modos de permisos formalizan una disciplina que ya aplicaban los buenos equipos: pensar antes de escribir, ejecutar con control y revertir sin dolor. Alternar con Shift+Tab cuesta un segundo y evita horas de re-trabajo: explora y acuerda el camino en Plan, y construye con el nivel de autonomía que la tarea merece. En el próximo tema recorreremos en detalle los comandos slash y las opciones de la línea de comandos.