Los 3 modos de Copilot Chat
Ask, Plan, Agent — y cuándo usar cada uno
Los 3 modos de Copilot Chat
Ask, Plan, Agent — y cuándo usar cada uno
6 capas de personalización
Instrucciones, agentes, prompts, skills, hooks y MCPs
Bootstrap con /init
Crear el primer copilot-instructions.md real del proyecto
Path-specific instructions
Contexto automático por tipo de fichero y AGENTS.md por directorio
La mayoría del equipo solo usa Ask (preguntar). Son tres modos con propósitos distintos, seleccionables desde el dropdown de agentes en el Chat view:
| Modo | Qué hace | Toca el código |
|---|---|---|
| Ask | Preguntas, exploración, explicaciones sobre el código y el codebase | No |
| Plan | Genera un plan de implementación con pasos, dependencias y preguntas abiertas. Al aprobarlo aparece “Start Implementation” que pasa al modo Agent. | No |
| Agent | Implementa autónomamente. Decide qué ficheros tocar, ejecuta comandos de terminal y se autocorrige hasta completar la tarea. | Sí |
Plan es la novedad que más cambia el flujo de trabajo. El patrón: primero planeas, revisas el plan, y solo entonces el agente ejecuta. Para features complejas es la diferencia entre “a ver qué sale” y “esto es lo que va a pasar”.
Adicionalmente, se puede configurar el nivel de permisos del agente en cada sesión desde el dropdown de permisos en el Chat view:
| Nivel | Comportamiento |
|---|---|
| Default Approvals | Solo operaciones seguras se aprueban solas; el resto muestra dialogo de confirmacion |
| Bypass Approvals | Aprueba todos los tool calls sin dialogos, reintenta en errores automaticamente |
| Autopilot (Preview) | Aprueba todo, responde preguntas de clarificacion automaticamente y trabaja hasta completar la tarea sin interrupcion |
El flujo por defecto interrumpe al dev con dialogos de confirmacion. Para el equipo que ya conoce el agente y confía en él, hay varias formas de eliminarlo completamente.
Opción 1 — Por sesión: el permissions picker del Chat view
En el Chat view hay un permissions picker (icono de escudo/candado junto al selector de agente) que controla el nivel de permisos de la sesión actual. Requiere VS Code 1.99+ y chat.autopilot.enabled: true (activo por defecto).
Los tres niveles son los mismos de la tabla anterior: Default Approvals, Bypass Approvals y Autopilot. Al cambiar, solo afecta a la sesión en curso — al iniciar una nueva sesión vuelve al nivel por defecto.
Referencia oficial: Choose a permission level
Opción 2 — Global: chat.tools.global.autoApprove
Activa la aprobacion automatica en todos los workspaces de forma permanente. Se configura en settings.json:
{ "chat.tools.global.autoApprove": true}O directamente desde el chat con los slash commands:
/yolo o /autoApprove — activa la aprobacion global/disableYolo o /disableAutoApprove — la desactivaLa primera vez que se activa, VS Code muestra un dialogo de confirmacion de seguridad.
Opción 3 — Por comando de terminal: chat.tools.terminal.autoApprove
Control granular sobre qué comandos de terminal se aprueban automaticamente y cuáles siempre requieren confirmacion:
{ "chat.tools.terminal.autoApprove": { "npm install": true, "npm run": true, "/^git (status|diff|log|show\\b.*)$/": true, "php artisan test": true, "php artisan migrate": true, "/^php artisan migrate.*(drop|fresh|reset)/": false, "DROP": false, "/rm -rf/": false }}La clave es true para aprobar automaticamente y false para bloquear siempre (incluso si global.autoApprove está activo). Los patrones entre / son expresiones regulares.
Opción 4 — Por tool: Chat: Manage Tool Approval
Comando de la paleta (Ctrl+Shift+P) que abre un panel para configurar aprobaciones tool por tool — util cuando se quiere aprobar automaticamente la mayoria pero revisar manualmente alguna operacion especifica (p.ej. dejar el create_file sin confirmacion pero mantener confirmacion en run_in_terminal para un MCP concreto).
Opción 5 — Sandbox (maxima autonomia con seguridad)
Cuando se activa el sandbox ("chat.agent.sandbox": true) los comandos de terminal se aprueban automaticamente porque corren en un entorno aislado con acceso restringido al sistema de ficheros y red. Util para dejar al agente trabajar completamente solo sin riesgo de operaciones destructivas fuera del directorio del proyecto.
Copilot tiene 6 capas. Saber cuál usar en cada caso es la clave:
Instrucciones (copilot-instructions.md, *.instructions.md) — contexto siempre activo. Define cómo debe comportarse el agente en este proyecto.
Agentes custom (.agent.md) — personas especializadas con herramientas restringidas. Planner, Coder, Reviewer.
Prompt files (.prompt.md) — slash commands propios para tareas repetibles. /crear-componente, /revisar-mr.
Agent Skills (SKILL.md) — conocimiento reutilizable con scripts y recursos. Estándar abierto, funciona en Copilot, CLI y coding agent.
Hooks — shell commands que se ejecutan automáticamente en puntos del ciclo de vida del agente. No son sugerencias: son deterministas.
MCPs — conectores a herramientas externas (GitLab, filesystem, APIs).
En las semanas siguientes iremos construyendo cada capa. Hoy nos centramos en la primera: instrucciones.
Panel de control visual para gestionar todo lo anterior desde un solo lugar. Se abre con el ícono de engranaje en el Chat view o con Chat: Open Chat Customizations. Desde aquí se crean, editan y gestionan agentes, prompts, skills, hooks y MCPs sin tocar ficheros manualmente.
Una de las características más importantes y menos conocidas: Copilot Business permite cambiar el modelo de IA en tiempo real desde el chat. El equipo no tiene por qué usar siempre el mismo modelo.
El selector de modelo está en la barra inferior del chat. La opción Auto selecciona el mejor modelo disponible automáticamente — es la opción por defecto y funciona bien para la mayoría de tareas.
Modelos disponibles para Copilot Business (abril 2026):
| Modelo | Creador | Multiplicador | Mejor para |
|---|---|---|---|
| GPT-4.1 | OpenAI | 0 (incluido) | Uso general, completaciones rapidas |
| GPT-5 mini | OpenAI | 0 (incluido) | Uso general, multimodal (acepta imagenes) |
| Grok Code Fast 1 | xAI | 0 (incluido) | Codigo, generacion y debugging rapido |
| Claude Haiku 4.5 | Anthropic | 0.33 | Preguntas rapidas, tareas simples |
| Claude Sonnet 4.6 | Anthropic | 1 | Modo agente: el mejor balance calidad/velocidad |
| Claude Opus 4.6 | Anthropic | 3 | Razonamiento profundo, arquitectura compleja |
| Gemini 3 Flash | 0.33 | Tareas ligeras, respuestas rapidas | |
| Gemini 3.1 Pro | 1 | Razonamiento, debugging multi-fichero | |
| GPT-5.4 | OpenAI | 1 | Razonamiento profundo y analisis de codigo |
Guia rapida de eleccion:
Imagenes en el chat — Se pueden adjuntar capturas de pantalla directamente al chat (pegar con Ctrl+V o arrastrar desde el Explorer). Util para: captura de un error en la consola del browser, mockup de la UI para que el agente genere el componente Angular, diagrama de arquitectura para que explique el flujo.
/create-*No hace falta escribir nada desde cero:
/init — analiza el repo y genera un copilot-instructions.md adaptado al proyecto real/create-agent — genera un .agent.md con herramientas, instrucciones y frontmatter/create-prompt — genera un .prompt.md para una tarea concreta/create-skill — genera un SKILL.md con directorio, instrucciones y recursos/create-hook — genera un hook JSON con el evento y comando adecuadoscopilot-instructions.md — instrucciones globales del proyectoEl fichero de instrucciones global vive en .github/copilot-instructions.md. Se aplica a todas las peticiones del proyecto automáticamente.
Qué incluir:
Qué nunca poner:
Es un fichero versionado en el repo — cualquier dev puede mejorarlo con una MR.
Ficheros *.instructions.md en .github/instructions/ con frontmatter applyTo. Permiten instrucciones que solo aplican cuando el agente trabaja en ficheros específicos.
applyTo: src/**/*.tsapplyTo: app/**/*.phpapplyTo: **/*.spec.ts, **/*Test.phpEjemplo — .github/instructions/angular.instructions.md:
---applyTo: 'src/**/*.ts'---Usa Angular Signals para estado reactivo (signal, computed, effect).No uses NgRx ni BehaviorSubject para estado de componente.Componentes standalone por defecto.Inyección con inject(), no constructor injection.Si además existe el copilot-instructions.md global, ambos se combinan automáticamente.
AGENTS.md — instrucciones por directorioFicheros AGENTS.md que el agente usa cuando trabaja autónomamente. El más cercano en el árbol de directorios tiene precedencia:
Demás de VS Code, Copilot tiene presencia directa en la terminal via la extensión gh copilot. Dos comandos que se usan a diario:
gh copilot suggest "listar los pods que están crasheando en el namespace prod"gh copilot explain "git rebase -i --onto HEAD~3 HEAD~1"Instalación:
gh extension install github/gh-copilotLos dos comandos principales:
| Comando | Uso | Cuándo usarlo |
|---|---|---|
gh copilot suggest | Pregunta qué comando necesitas, la CLI lo genera | No recuerdas la sintaxis exacta de ssh, docker, git, awk… |
gh copilot explain | Pega un comando y la CLI lo explica | Heredas scripts de CI/CD o comandos de ops que no entiendes |
Aliases recomendados (añadir al .bashrc/.zshrc):
alias ghcs='gh copilot suggest'alias ghce='gh copilot explain'O de forma oficial, con integración de shell completa (completa el comando directamente en la línea):
eval "$(gh copilot alias -- bash)" # o zsh / fishEjemplos de uso real:
# Construir imagen Docker con tag basado en la rama actualghcs "build docker image tagging with current branch name"
# Entender un comando heredado en el pipelineghce "rsync -avz --exclude='.git' --delete src/ user@host:/var/www/"
# Buscar en logs de producciónghcs "find all PHP fatal errors in /var/log/nginx/ from last 24 hours"Diferencia clave con el chat de VS Code: la CLI opera sobre el entorno del shell — conoce el sistema operativo, las variables de entorno y el directorio actual. Para tareas de terminal, ops y scripting, es más precisa que el chat.
/initEl equipo no tiene estándares documentados. /init resuelve esto: el agente analiza el repo real y genera automáticamente un borrador de copilot-instructions.md con las convenciones que ya existen en el código. El equipo revisa, valida y ajusta. Resultado: en 20 minutos tienen un fichero de instrucciones real, no genérico.
Ejecutar /init sobre el repo real en una rama nueva
Revisar y mejorar el copilot-instructions.md generado — añadir lo que falta, quitar lo que sobra
Crear .github/instructions/angular.instructions.md con applyTo: 'src/**/*.ts' (Signals, standalone, OnPush, inject())
Crear .github/instructions/laravel.instructions.md con applyTo: 'app/**/*.php' (Form Requests, Policies, JsonResource)
Crear .github/instructions/tests.instructions.md con applyTo: '**/*.spec.ts,**/*Test.php'
Configurar chat.tools.terminal.autoApprove en el settings.json local con los comandos del proyecto
Verificar: pedir al agente que genere un controller Laravel y un componente Angular — comprobar que aplica las instrucciones correctas en cada caso
Abrir una MR con todos los ficheros de instrucciones para que el equipo los revise