Skip to content

Fundamentos de Copilot Agent Mode

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


Los 3 modos de Copilot Chat: Ask, Plan, Agent

Section titled “Los 3 modos de Copilot Chat: Ask, Plan, Agent”

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:

ModoQué haceToca el código
AskPreguntas, exploración, explicaciones sobre el código y el codebaseNo
PlanGenera un plan de implementación con pasos, dependencias y preguntas abiertas. Al aprobarlo aparece “Start Implementation” que pasa al modo Agent.No
AgentImplementa autónomamente. Decide qué ficheros tocar, ejecuta comandos de terminal y se autocorrige hasta completar la tarea.

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:

NivelComportamiento
Default ApprovalsSolo operaciones seguras se aprueban solas; el resto muestra dialogo de confirmacion
Bypass ApprovalsAprueba 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

Configuracion avanzada: hacer que el agente trabaje solo

Section titled “Configuracion avanzada: hacer que el agente trabaje solo”

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 desactiva

La 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:

  1. Instrucciones (copilot-instructions.md, *.instructions.md) — contexto siempre activo. Define cómo debe comportarse el agente en este proyecto.

  2. Agentes custom (.agent.md) — personas especializadas con herramientas restringidas. Planner, Coder, Reviewer.

  3. Prompt files (.prompt.md) — slash commands propios para tareas repetibles. /crear-componente, /revisar-mr.

  4. Agent Skills (SKILL.md) — conocimiento reutilizable con scripts y recursos. Estándar abierto, funciona en Copilot, CLI y coding agent.

  5. Hooks — shell commands que se ejecutan automáticamente en puntos del ciclo de vida del agente. No son sugerencias: son deterministas.

  6. 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.

Selector de modelo — Claude, Gemini, GPT y más

Section titled “Selector de modelo — Claude, Gemini, GPT y más”

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):

ModeloCreadorMultiplicadorMejor para
GPT-4.1OpenAI0 (incluido)Uso general, completaciones rapidas
GPT-5 miniOpenAI0 (incluido)Uso general, multimodal (acepta imagenes)
Grok Code Fast 1xAI0 (incluido)Codigo, generacion y debugging rapido
Claude Haiku 4.5Anthropic0.33Preguntas rapidas, tareas simples
Claude Sonnet 4.6Anthropic1Modo agente: el mejor balance calidad/velocidad
Claude Opus 4.6Anthropic3Razonamiento profundo, arquitectura compleja
Gemini 3 FlashGoogle0.33Tareas ligeras, respuestas rapidas
Gemini 3.1 ProGoogle1Razonamiento, debugging multi-fichero
GPT-5.4OpenAI1Razonamiento profundo y analisis de codigo

Guia rapida de eleccion:

  • Tarea rapida, pregunta de sintaxis → GPT-5 mini o Claude Haiku 4.5
  • Modo agente implementando features → Claude Sonnet 4.6 (o Auto)
  • Debugging complejo, arquitectura → Claude Opus 4.6 o GPT-5.4
  • Agente con muchas tools y ficheros → Claude Sonnet 4.6 o Gemini 3.1 Pro
  • Adjuntar capturas de pantalla → GPT-5 mini, Claude Sonnet 4.6, Gemini 3.1 Pro

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.

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 adecuados

copilot-instructions.md — instrucciones globales del proyecto

Section titled “copilot-instructions.md — instrucciones globales del proyecto”

El fichero de instrucciones global vive en .github/copilot-instructions.md. Se aplica a todas las peticiones del proyecto automáticamente.

Qué incluir:

  • Stack técnico (Angular Signals + Laravel)
  • Convenciones de código del equipo
  • Restricciones de arquitectura
  • Tono y formato de respuestas

Qué nunca poner:

  • Credenciales o tokens
  • Lógica de negocio sensible
  • Datos personales de clientes

Es un fichero versionado en el repo — cualquier dev puede mejorarlo con una MR.

Path-specific instructions — contexto por tipo de fichero

Section titled “Path-specific instructions — contexto por tipo de fichero”

Ficheros *.instructions.md en .github/instructions/ con frontmatter applyTo. Permiten instrucciones que solo aplican cuando el agente trabaja en ficheros específicos.

  • Directory.github/
    • Directoryinstructions/
      • angular.instructions.md applyTo: src/**/*.ts
      • laravel.instructions.md applyTo: app/**/*.php
      • tests.instructions.md applyTo: **/*.spec.ts, **/*Test.php

Ejemplo — .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 directorio

Section titled “AGENTS.md — instrucciones por directorio”

Ficheros AGENTS.md que el agente usa cuando trabaja autónomamente. El más cercano en el árbol de directorios tiene precedencia:

  • AGENTS.md instrucciones generales del proyecto
  • Directoryfrontend/
    • AGENTS.md instrucciones Angular
  • Directorybackend/
    • AGENTS.md instrucciones Laravel

GitHub Copilot CLI — Copilot en la terminal

Section titled “GitHub Copilot CLI — Copilot en la terminal”

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:

Terminal window
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:

Terminal window
gh extension install github/gh-copilot

Los dos comandos principales:

ComandoUsoCuándo usarlo
gh copilot suggestPregunta qué comando necesitas, la CLI lo generaNo recuerdas la sintaxis exacta de ssh, docker, git, awk
gh copilot explainPega un comando y la CLI lo explicaHeredas scripts de CI/CD o comandos de ops que no entiendes

Aliases recomendados (añadir al .bashrc/.zshrc):

Terminal window
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):

Terminal window
eval "$(gh copilot alias -- bash)" # o zsh / fish

Ejemplos de uso real:

Terminal window
# Construir imagen Docker con tag basado en la rama actual
ghcs "build docker image tagging with current branch name"
# Entender un comando heredado en el pipeline
ghce "rsync -avz --exclude='.git' --delete src/ user@host:/var/www/"
# Buscar en logs de producción
ghcs "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.

El 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.


  1. Ejecutar /init sobre el repo real en una rama nueva

  2. Revisar y mejorar el copilot-instructions.md generado — añadir lo que falta, quitar lo que sobra

  3. Crear .github/instructions/angular.instructions.md con applyTo: 'src/**/*.ts' (Signals, standalone, OnPush, inject())

  4. Crear .github/instructions/laravel.instructions.md con applyTo: 'app/**/*.php' (Form Requests, Policies, JsonResource)

  5. Crear .github/instructions/tests.instructions.md con applyTo: '**/*.spec.ts,**/*Test.php'

  6. Configurar chat.tools.terminal.autoApprove en el settings.json local con los comandos del proyecto

  7. Verificar: pedir al agente que genere un controller Laravel y un componente Angular — comprobar que aplica las instrucciones correctas en cada caso

  8. Abrir una MR con todos los ficheros de instrucciones para que el equipo los revise