Skip to main content

Referencia de comandos de la CLI de GitHub Copilot

Busque comandos y métodos abreviados de teclado para ayudarle a usar CLI de Copilot de forma eficaz.

Comandos de la línea de comandos

Comandopropósito
copilotInicie la interfaz de usuario interactiva.
copilot help [TOPIC]Mostrar información de ayuda. Los temas de ayuda incluyen: config, commands, environment, logging, monitoring, permissionsy providers.
copilot initInicialice instrucciones personalizadas de Copilot para este repositorio.
copilot loginAutentíquese con Copilot a través del flujo del dispositivo OAuth.
          `--host HOST` Acepta para especificar la dirección URL del GitHub host (valor predeterminado: `https://github.com`). |

| copilot login [OPCIÓN] | Autentíquese con Copilot a través del flujo del dispositivo OAuth. Consulte copilot login las opciones. | | copilot mcp | Administre las configuraciones del servidor MCP desde la línea de comandos. | | copilot plugin | Administrar complementos y mercados de complementos. | | copilot update | Descargue e instale la versión más reciente. | | copilot version | Mostrar información de versión y comprobar si hay actualizaciones. |

          `copilot login` opciones
Opciónpropósito
--host HOST
          GitHub dirección URL de host (valor predeterminado: `https://github.com`). Úselo para autenticarse con una GitHub Enterprise Cloud instancia que use la residencia de datos (por ejemplo, `https://example.ghe.com`). |

| --config-dir PATH | Establezca el directorio de configuración (valor predeterminado: ~/.copilot). |

El modo de autenticación predeterminado es un flujo de explorador basado en web. Después de la finalización, un token de autenticación se almacena de forma segura en el almacén de credenciales del sistema. Si no se encuentra un almacén de credenciales, el token se almacena en un archivo de configuración de texto sin formato en ~/.copilot/.

Como alternativa, CLI de Copilot usará un token de autenticación que se encuentra en variables de entorno. A continuación se comprueban en orden de prioridad: COPILOT_GITHUB_TOKEN, GH_TOKEN, GITHUB_TOKEN. Este método es más adecuado para su uso sin interfaz gráfica, como en la automatización.

Los tipos de tokens admitidos incluyen fine-grained personal access tokens (v2 PAT) con el permiso "Solicitudes de Copilot", tokens de OAuth de la aplicación CLI Copilot, y tokens de OAuth de la aplicación GitHub CLI (gh). No se admiten los clásicos personal access tokens (ghp_).

          **Ejemplos:**
# Authenticate with github.com
copilot login

# Authenticate with GitHub Enterprise Cloud (data residency)
copilot login --host https://example.ghe.com

# Use a fine-grained PAT via environment variable
COPILOT_GITHUB_TOKEN=github_pat_... copilot

Accesos directos globales en la interfaz interactiva

Shortcutpropósito
@ FILENAMEIncluya el contenido del archivo en el contexto.
# NUMBERIncluya un problema o una GitHub solicitud de incorporación de cambios en el contexto.
! COMMANDEjecute un comando en su shell local, omitiendo Copilot.
?Abrir ayuda rápida (en un indicador vacío).
EscCancele la operación actual.
Ctrl+CCancelar operación/borrar entrada. Presione dos veces para salir.
Ctrl+DApagado.
Ctrl+GEdite la instrucción en un editor externo ($EDITOR).
Ctrl+LBorre la pantalla.
Ctrl+Escriba o Ctrl+Q.Poner en cola un mensaje para enviar mientras el agente está ocupado.
Ctrl+RBúsqueda inversa a través del historial de comandos.
Ctrl+VPegue desde el Portapapeles como archivo adjunto.
Ctrl+X después /Después de empezar a escribir un mensaje, esto le permite ejecutar un comando de barra, por ejemplo, si desea cambiar el modelo sin tener que volver a escribir el mensaje.
Ctrl+X después eEdite la instrucción en un editor externo ($EDITOR).
Ctrl+X después oAbra el vínculo más reciente de la línea de tiempo.
Ctrl+ZSuspenda el proceso en segundo plano (Unix).
Mayús+Intro o Opción+Intro (Mac) / Alt+Intro (Windows/Linux)Inserte una nueva línea en la entrada.
Mayús+TabuladorCiclo entre el modo estándar, plan y Autopilot.

Accesos directos de escala de tiempo en la interfaz interactiva

Shortcutpropósito
Ctrl+OSi bien no hay nada en la entrada de la solicitud, expande los elementos recientes en la línea de tiempo de respuesta de Copilot para mostrar más detalles.
Ctrl+ESi bien no hay nada en la entrada del mensaje, expande todos los elementos en la línea de tiempo de respuesta de Copilot.
Ctrl+TExpandir o contraer la visualización del razonamiento en las respuestas.
Subir/ páginaPágina abajoDesplazar la línea de tiempo hacia arriba o hacia abajo en una página.
Shortcutpropósito
Ctrl+AIr al principio de la línea (al escribir).
Ctrl+BVaya al carácter anterior.
Ctrl+EVaya al final de la línea (al escribir).
Ctrl+FVaya al siguiente carácter.
Ctrl+HElimine el carácter anterior.
Ctrl+KEliminar desde el cursor hasta el final de la línea. Si el cursor está al final de la línea, elimine el salto de línea.
Ctrl+UEliminar desde el cursor hasta el principio de la línea.
Ctrl+WElimine la palabra anterior.
Página principalVaya al principio del texto.
FinVaya al final del texto.
Alt+/← (Windows/Linux)
          <kbd>Opción</kbd>+<kbd>←</kbd>/<kbd>→</kbd> (Mac) | Mueva el cursor una palabra a la vez.             |

| / | Navegue por el historial de comandos. | | Tab / Ctrl+Y | Acepte la sugerencia de finalización en línea actual. |

Comandos de barra en la interfaz interactiva

Comandopropósito
/add-dir PATHAgregue un directorio a la lista de permitidos para el acceso a archivos.
/agentExamine y seleccione entre los agentes disponibles (si los hay). Consulte Acerca de los agentes personalizados.
/ask QUESTIONHaga una pregunta rápida sin agregar al historial de conversación. Solo está disponible en modo experimental.
/allow-all [on|off|show], /yolo [on|off|show]Habilite todos los permisos (herramientas, rutas de acceso y direcciones URL).
/changelog [summarize] [VERSION|last N|since VERSION], /release-notes [summarize] [VERSION|last N|since VERSION]Muestra el registro de cambios de la CLI. Opcionalmente, especifique una versión, un recuento de versiones recientes o una versión inicial. Agregue la palabra clave summarize para un resumen generado por IA.
/chronicle <standup|tips|improve|reindex>Herramientas de análisis del historial de sesiones. Solo está disponible en modo experimental.
/clear [PROMPT], , /new [PROMPT], /reset [PROMPT]Inicie una nueva conversación.
/compactResumir el historial de conversaciones para reducir el uso de la ventana de contexto. Consulte Administración del contexto en CLI de GitHub Copilot.
/contextMuestra el uso y la visualización del token de la ventana de contexto. Consulte Administración del contexto en CLI de GitHub Copilot.
/copyCopie la última respuesta en el Portapapeles.
/cwd, /cd [PATH]Cambie el directorio de trabajo o muestre el directorio actual.
/delegate [PROMPT]Delegar cambios en un repositorio remoto con una solicitud de incorporación de cambios generada por IA. Consulte Delegación de tareas a CLI de GitHub Copilot.
/diffRevise los cambios realizados en el directorio actual.
/downgrade <VERSION>Descargue y reinicie en una versión específica de la CLI. Disponible para las cuentas de equipo.
/envMostrar los detalles del entorno cargados (instrucciones, servidores MCP, aptitudes, agentes, complementos, LSP, extensiones).
/exit, /quitSalir de la CLI.
/experimental [on|off|show]Alternar, establecer o mostrar funciones experimentales.
/feedback, /bugProporcione comentarios sobre la CLI.
/fleet [PROMPT]Habilite la ejecución paralela de subagentes de partes de una tarea. Consulte Ejecución de tareas en paralelo con el /fleet comando.
/helpMostrar la ayuda para comandos interactivos.
/ideConéctese a un área de trabajo del IDE. Consulte CLI de GitHub Copilot Conexión aVS Code.
/initInicialice instrucciones personalizadas y características de agente de Copilot para este repositorio. Vea Inicialización del proyecto para Copilot.
/instructionsVer y activar o desactivar archivos de instrucciones personalizadas.
/keep-alive [on|busy|NUMBERm|NUMBERh]Impedir que la máquina se ponga en suspensión: mientras una sesión de la línea de comandos está activa, mientras el agente está ocupado o durante un período de tiempo definido. Solo está disponible en modo experimental.
/list-dirsMuestra todos los directorios para los que se ha permitido el acceso a archivos.
/loginInicie sesión en Copilot.
/logoutCierre sesión en Copilot.
/lsp [show|test|reload|help] [SERVER-NAME]Administrar la configuración del servidor de idioma.
/mcp [show|add|edit|delete|disable|enable|auth|reload] [SERVER-NAME]Administrar la configuración del servidor MCP. Consulte Adición de servidores MCP para CLI de GitHub Copilot.
/model, /models [MODEL]Seleccione el modelo de IA que desea usar.
/plan [PROMPT]Cree un plan de implementación antes de codificar.
/plugin [marketplace|install|uninstall|update|list] [ARGS...]Administrar complementos y mercados de complementos. Consulte Acerca de los complementos para CLI de GitHub Copilot.
/pr [view|create|fix|auto]Administrar solicitudes de incorporación de cambios para la rama actual. Consulte Gestión de pull requests con el comando /pr.
/remoteHabilite el acceso remoto a esta sesión desde GitHub.com y GitHub Mobile. Consulte Controlar una CLI de GitHub Copilot sesión desde otro dispositivo.
/rename [NAME]Cambie el nombre de la sesión actual (genera automáticamente un nombre si se omite; alias para /session rename).
/research TOPICRealice una investigación profunda utilizando GitHub fuentes de búsqueda y web. Consulte Investigación con CLI de GitHub Copilot.
/reset-allowed-toolsRestablezca la lista de herramientas permitidas.
/restartReinicie la CLI, conservando la sesión actual.
/resume [VALUE], /continueCambie a otra sesión eligiendo entre una lista. Opcionalmente, especifique un identificador de sesión, un prefijo de identificador o un nombre de sesión para reanudar una sesión específica.
/review [PROMPT]Ejecute el agente de revisión de código para analizar los cambios. Consulte Solicitud de una revisión de código con CLI de GitHub Copilot.
/session [info|checkpoints [n]|files|plan|rename [NAME]|cleanup|prune|delete [ID]|delete-all], /sessions [info|checkpoints [n]|files|plan|rename [NAME]|cleanup|prune|delete [ID]|delete-all]Mostrar información de sesión y administrar sesiones. Subcomandos: info, checkpoints, files, plan, rename, cleanup, prune, delete, delete-all.
/share [file|html|gist] [session|research] [PATH], /export [file|html|gist] [session|research] [PATH]Comparta la sesión en un archivo Markdown, un archivo HTML interactivo o un gist GitHub.
/skills [list|info|add|remove|reload] [ARGS...]Gestionar habilidades para capacidades mejoradas. Consulte Adición de habilidades de agente para CLI de GitHub Copilot.
/statusline, /footerConfigure los elementos que aparecen en la línea de estado.
/tasksVer y administrar tareas en segundo plano (subagentes y sesiones de shell).
/terminal-setupConfigure el terminal para la compatibilidad con la entrada multilínea (Mayús+Entrar y Ctrl+Entrar).
/theme [default|dim|high-contrast|colorblind]Ver o establecer el modo de color.
/undo, /rewindRebobinar el último turno y revertir los cambios de archivo.
/update, /upgradeActualice la CLI a la versión más reciente.
/usageMuestra las estadísticas y métricas de uso de la sesión.
/user [show|list|switch]Administrar al usuario actual GitHub.
/versionMostrar información de versión y comprobar si hay actualizaciones.

Para obtener una lista completa de los comandos de barra diagonal disponibles, escriba /help en la interfaz interactiva de la CLI.

Opciones de la línea de comandos

Opciónpropósito
--add-dir=PATHAgregue un directorio a la lista de permitidos para el acceso a archivos (se puede usar varias veces).
--add-github-mcp-tool=TOOLAgregue una herramienta para habilitar para el GitHub servidor MCP, en lugar del subconjunto predeterminado de la CLI (se puede usar varias veces). Utilice * para todas las herramientas.
--add-github-mcp-toolset=TOOLSETAgregue un conjunto de herramientas para habilitar para el GitHub servidor MCP, en lugar del subconjunto predeterminado de la CLI (se puede usar varias veces). Use all para todos los conjuntos de herramientas.
--additional-mcp-config=JSONAgregue un servidor MCP solo para esta sesión. La configuración del servidor se puede proporcionar como una cadena JSON o una ruta de acceso de archivo (prefijo con @). Amplía la configuración de ~/.copilot/mcp-config.json. Invalida cualquier configuración de servidor MCP instalada con el mismo nombre. Consulte Adición de servidores MCP para CLI de GitHub Copilot.
--agent=AGENTEspecifique un agente personalizado que se va a usar. Consulte Acerca de los agentes personalizados.
--allow-allHabilite todos los permisos (equivalentes a --allow-all-tools --allow-all-paths --allow-all-urls).
--allow-all-pathsDeshabilite la comprobación de la ruta de acceso del archivo y permita el acceso a cualquier ruta de acceso.
--allow-all-toolsPermitir que todas las herramientas se ejecuten automáticamente sin confirmación. Necesario cuando se usa la CLI mediante programación (env: COPILOT_ALLOW_ALL).
--allow-all-urlsPermitir el acceso a todas las direcciones URL sin confirmación.
--allow-tool=TOOL ...Herramientas que la CLI tiene permiso para usar. No solicitará permiso. Para varias herramientas, use una lista entrecomillada y separada por comas. Consulte Permitir y denegar el uso de la herramienta.
--allow-url=URL ...Permitir el acceso a direcciones URL o dominios específicos. Para varias direcciones URL, use una lista entrecomillada y separada por comas.
--autopilotHabilite la continuación del piloto automático en modo aviso. Consulte Permitir que la CLI de GitHub Copilot funcione de forma autónoma.
--available-tools=TOOL ...Solo estas herramientas estarán disponibles para el modelo. Para varias herramientas, use una lista entrecomillada y separada por comas. Consulte Permitir y denegar el uso de la herramienta.
--banner, --no-bannerMostrar u ocultar el banner de inicio.
--bash-envHabilitar la BASH_ENV compatibilidad con las shells Bash.
--config-dir=PATHEstablezca el directorio de configuración (valor predeterminado: ~/.copilot).
--connect[=SESSION-ID]Conéctese directamente a una sesión remota (opcionalmente, especifique un identificador de sesión o un identificador de tarea). Entra en conflicto con --resume y --continue.
--continueReanude la sesión más reciente en el directorio de trabajo actual, o retome la sesión más reciente a nivel global.
--deny-tool=TOOL ...Herramientas que la CLI no tiene permiso para usar. No solicitará permiso. Para varias herramientas, use una lista entrecomillada y separada por comas.
--deny-url=URL ...Denegar el acceso a direcciones URL o dominios específicos tiene prioridad sobre --allow-url. Para varias direcciones URL, use una lista entrecomillada y separada por comas.
--disable-builtin-mcpsDeshabilite todos los servidores MCP integrados (actualmente: github-mcp-server).
--disable-mcp-server=SERVER-NAMEDeshabilite un servidor MCP específico (se puede usar varias veces).
--disallow-temp-dirImpedir el acceso automático al directorio temporal del sistema.
--effort=LEVEL, --reasoning-effort=LEVELEstablezca el nivel de esfuerzo de razonamiento (low, medium, high).
--enable-all-github-mcp-toolsHabilite todas las GitHub herramientas del servidor MCP, en lugar del subconjunto predeterminado de la CLI. Invalida las opciones --add-github-mcp-toolset y --add-github-mcp-tool.
--enable-reasoning-summariesSolicite resúmenes de razonamiento para modelos openAI que lo admitan.
--excluded-tools=TOOL ...Estas herramientas no estarán disponibles para el modelo. Para varias herramientas, use una lista entrecomillada y separada por comas.
--experimentalHabilite las características experimentales (use --no-experimental para deshabilitar).
-h, --helpMostrar ayuda.
-i PROMPT, --interactive=PROMPTInicie una sesión interactiva y ejecute automáticamente esta solicitud.
--log-dir=DIRECTORYEstablezca el directorio del archivo de registro (valor predeterminado: ~/.copilot/logs/).
--log-level=LEVELConfigure el nivel de registro (opciones: none, error, warning, info, debug, all, default).
--max-autopilot-continues=COUNTNúmero máximo de mensajes de continuación en el modo autopilot (valor predeterminado: ilimitado). Consulte Permitir que la CLI de GitHub Copilot funcione de forma autónoma.
--mode=MODEEstablezca el modo de agente inicial (opciones: interactive, plan, autopilot). No se puede combinar con --autopilot o --plan.
--model=MODELEstablezca el modelo de IA que desea usar. Pase auto para permitir que Copilot seleccione automáticamente el mejor modelo disponible.
--mouse[=VALUE]Habilite la compatibilidad con el mouse en el modo de pantalla alternativo. VALUE puede ser on (valor predeterminado) o off. Cuando está habilitada, la CLI captura los eventos del mouse en el modo de pantalla alt: rueda de desplazamiento, clics, etc. Cuando está deshabilitado, se conserva el comportamiento nativo del mouse del terminal. Una vez establecida la configuración, se conserva escribiéndola en su archivo de configuración.
-n NAME, --name=NAMEEstablezca un nombre para la nueva sesión. Usado por --resume y /resume para buscar sesiones por nombre.
--no-ask-userDeshabilite la ask_user herramienta (el agente funciona de forma autónoma sin formular preguntas).
--no-auto-updateDeshabilite la descarga automática de actualizaciones de la CLI.
--no-bash-envDeshabilite la compatibilidad de BASH_ENV con los shells de Bash.
--no-colorDeshabilite toda la salida de color.
--no-custom-instructionsDeshabilite la carga de instrucciones personalizadas desde AGENTS.md y archivos relacionados.
--no-experimentalDesactivar las funciones experimentales.
--no-mouseDesactive el soporte para el ratón.
--no-remoteDeshabilite el acceso remoto para esta sesión.
--output-format=FORMATFORMAT puede ser text (valor predeterminado) o json (genera JSONL: un objeto JSON por línea).
-p PROMPT, --prompt=PROMPTEjecute un comando programáticamente (se cierra al finalizar). Consulte Ejecución CLI de GitHub Copilot de forma programática.
--planIniciar en modo de planificación. Abreviatura de --mode plan. No se puede combinar con --mode o --autopilot.
--plain-diffDeshabilitar la representación de diferencias enriquecidas (resaltado de sintaxis mediante la herramienta de diferencias especificada por la configuración de Git).
--plugin-dir=DIRECTORYCargue un complemento desde un directorio local (se puede usar varias veces).
--remoteHabilite el acceso remoto a esta sesión desde GitHub.com y GitHub Mobile. Consulte Controlar una CLI de GitHub Copilot sesión desde otro dispositivo.
--resume[=VALUE]Para reanudar una sesión interactiva anterior, elija una lista. Opcionalmente, especifique un identificador de sesión, un prefijo de identificador o un nombre de sesión. La coincidencia de nombres es exacta y no distingue mayúsculas de minúsculas; vuelve al resumen generado automáticamente cuando no coincide ningún nombre explícito.
-s, --silentGenera solo la respuesta del agente (sin estadísticas de uso), útil para el scripting con -p.
--screen-readerHabilite las optimizaciones del lector de pantalla.
--secret-env-vars=VAR ...Redacte una variable de entorno desde entornos de servidor de shell y MCP (se pueden usar varias veces). Para varias variables, use una lista entrecomillada y separada por comas. Los valores de las variables de entorno GITHUB_TOKEN y COPILOT_GITHUB_TOKEN se eliminan de la salida de manera predeterminada.
--share=PATHComparta una sesión en un archivo Markdown después de completar una sesión programática (ruta de acceso predeterminada: ./copilot-session-<ID>.md).
--share-gistComparta una sesión con un gist GitHub de secreto después de la finalización de una sesión mediante programación.
--stream=MODEHabilite o deshabilite el modo de streaming (opciones de modo: on o off).
-v, --versionMostrar información de versión.
--yoloHabilite todos los permisos (equivalentes a --allow-all).

Para obtener una lista completa de comandos y opciones, ejecute copilot help.

Nota:

Las opciones --remote, --no-remote y --connect requieren que la característica de sesiones remotas esté disponible en su cuenta.

Valores de disponibilidad de herramientas

Las --available-tools opciones y --excluded-tools admiten estos valores:

Herramientas de Shell

Nombre de la herramientaDescripción
bash / powershellEjecutar comandos
list_bash / list_powershellEnumerar sesiones de shell activas
read_bash / read_powershellLectura de la salida de una sesión de shell
stop_bash / stop_powershellFinalizar una sesión de shell
write_bash / write_powershellEnviar entrada a una sesión de shell

Herramientas de operación de archivos

Nombre de la herramientaDescripción
apply_patchAplicar parches (que algunos modelos utilizan en lugar de edit/create)
createCrear nuevos archivos
editEdición de archivos mediante reemplazo de cadenas
viewLeer archivos o directorios

Herramientas de delegación de agentes y tareas

Nombre de la herramientaDescripción
list_agentsEnumerar agentes disponibles
read_agentComprobar el estado del agente en segundo plano
taskEjecutar subagentes

Otras herramientas

Nombre de la herramientaDescripción
ask_userFormular una pregunta al usuario
globBuscar patrones de coincidencia de archivos
grep (o rg)Buscar texto en archivos
show_filePresente fragmentos de código insertados en la línea de tiempo. Solo está disponible en modo experimental.
skillInvocación de aptitudes personalizadas
web_fetchCapturar y analizar contenido web

Patrones de permisos de herramientas

Las --allow-tool opciones y --deny-tool aceptan patrones de permisos con el formato Kind(argument). El argumento es opcional: si se omite, coincide con todas las herramientas de ese tipo.

KindDescripciónPatrones de ejemplo
memoryAlmacenamiento de hechos en la memoria del agentememory
readLecturas de archivos o directorios
          `read`, `read(.env)` |

| shell | Ejecución de comandos de Shell | shell(git push), , shell(git:*), shell | | url | Acceso a la URL a través de web-fetch o shell | url(github.com), url(https://*.api.com) | | write | Creación o modificación de archivos | write, write(src/*.ts) | | SERVER-NAME | Invocación de la herramienta de servidor MCP | MyMCP(create_issue), MyMCP |

Para las reglas de shell, el sufijo :* coincide con la raíz del comando seguido de un espacio, evitando coincidencias parciales. Por ejemplo, shell(git:*) coincide con git push y git pull, pero no coincide con gitea.

Las reglas de denegación siempre tienen prioridad sobre las reglas de autorización, incluso cuando --allow-all está configurado.

# Allow all git commands except git push
copilot --allow-tool='shell(git:*)' --deny-tool='shell(git push)'

# Allow a specific MCP server tool
copilot --allow-tool='MyMCP(create_issue)'

# Allow all tools from a server
copilot --allow-tool='MyMCP'

Variables de entorno

VariableDescripción
COLORFGBGSolución alternativa para la detección de fondo oscuro/claro del terminal.
COPILOT_ALLOW_ALLEstablézcalo en true para permitir todos los permisos automáticamente (equivalente a --allow-all).
COPILOT_AUTO_UPDATEEstablézcalo en false para deshabilitar las actualizaciones automáticas.
COPILOT_CACHE_HOMEInvalide el directorio de caché (que se usa para cachés de Marketplace, paquetes de actualización automática y otros datos efímeros). Consulte directorio de configuración de la CLI de GitHub Copilot para conocer los valores predeterminados de la plataforma.
COPILOT_CUSTOM_INSTRUCTIONS_DIRSLista separada por comas de directorios adicionales para obtener instrucciones personalizadas.
COPILOT_EDITORComando del editor para la edición interactiva (activada después de $VISUAL y $EDITOR). El valor predeterminado es vi si no se establece ninguno.
COPILOT_GH_HOST
          GitHub nombre de host solo para CLI de Copilot, anulando `GH_HOST`. Utiliza cuando `GH_HOST` se dirige a GitHub Enterprise Server pero Copilot necesita autenticarse frente a GitHub.com o un nombre de host GitHub Enterprise Cloud. |

| COPILOT_GITHUB_TOKEN | Token de autenticación. Tiene prioridad sobre GH_TOKEN y GITHUB_TOKEN. | | COPILOT_HOME | Invalide la configuración y el directorio de estado. Predeterminado: $HOME/.copilot. | | COPILOT_MODEL | Establezca el modelo de IA. | | COPILOT_PROMPT_FRAME | Establezca 1 para habilitar el marco decorativo de la interfaz de usuario que rodea el cuadro de entrada, o 0 para deshabilitarlo. Invalida la marca de PROMPT_FRAME característica experimental para la sesión actual. | | COPILOT_SKILLS_DIRS | Lista de directorios adicionales separada por comas para habilidades. | | COPILOT_SUBAGENT_MAX_CONCURRENT | Máximo de subagentes concurrentes en todo el árbol de sesiones. Predeterminado: 32. Intervalo: 1256. | | COPILOT_SUBAGENT_MAX_DEPTH | Profundidad máxima de anidamiento de subagentes. Predeterminado: 6. Intervalo: 1256. | | GH_HOST | GitHub nombre de host para ambos GitHub CLI y CLI de Copilot (valor predeterminado: github.com). Configura tu GitHub Enterprise Cloud con el nombre de host de ubicación de datos. Invalide con COPILOT_GH_HOST solo para CLI de Copilot . | | GH_TOKEN | Token de autenticación. Tiene prioridad sobre GITHUB_TOKEN. | | GITHUB_TOKEN | Token de autenticación. | | PLAIN_DIFF | Establézcalo en true para deshabilitar la representación de diferencias enriquecidas. | | USE_BUILTIN_RIPGREP | Establézcalo en false para usar el ripgrep del sistema en lugar de la versión incluida. |

Configuración del archivo de configuración

Para obtener información detallada sobre la configuración del archivo de configuración, incluida la lista completa de la configuración del usuario, la configuración del repositorio, la configuración local y la forma en cascada, consulte directorio de configuración de la CLI de GitHub Copilot.

Nota:

La configuración del usuario se almacenó previamente en ~/.copilot/config.json. La configuración existente en esa ubicación se migra automáticamente a ~/.copilot/settings.json al inicio.

Inicialización del proyecto para Copilot

Cuando usas el comando copilot init o el comando de barra inclinada /init dentro de una sesión interactiva, Copilot analiza tu código base y escribe o actualiza un archivo .github/copilot-instructions.md en el repositorio. Este archivo de instrucciones personalizado contiene instrucciones específicas del proyecto que mejorarán las sesiones futuras de la CLI.

Normalmente, usará copilot init, o /init, cuando inicie un nuevo proyecto o cuando empiece a usar CLI de Copilot en un repositorio existente.

El copilot-instructions.md archivo que se crea o actualiza normalmente documenta:

  • Compilar, probar y ejecutar comandos lint.
  • Arquitectura de alto nivel.
  • Convenciones específicas del código base.

Si el archivo ya existe, Copilot sugiere mejoras que puede optar por aplicar o rechazar.

La CLI busca el copilot-instructions.md archivo al iniciarse y, si falta, muestra el mensaje:

          💡 No se encontraron instrucciones de copilot. Ejecute /init para generar un archivo copilot-instructions.md para este proyecto.

Si no desea crear este archivo, puede ocultar permanentemente este mensaje de inicio para el repositorio actual mediante el /init suppress comando de barra diagonal.

Para obtener más información, vea Agregar instrucciones personalizadas del repositorio para GitHub Copilot.

Referencia de enlaces

Los hooks son comandos externos, webhooks HTTP o cadenas de comandos (solo en sessionStart) que se ejecutan en momentos específicos del ciclo de vida durante una sesión, lo que permite la automatización personalizada, los controles de seguridad y las integraciones. Los archivos de configuración de hook se cargan automáticamente desde .github/hooks/*.json de tu repositorio.

Formato de configuración de gancho

Los archivos de configuración de enlace usan el formato JSON con la versión 1. Cada entrada de gancho es un gancho de comandos, un gancho HTTP o (solo en sessionStart) un gancho de aviso.

Ganchos de comando

Los ganchos de comando ejecutan scripts de shell y son compatibles con todos los tipos de gancho.

{
  "version": 1,
  "hooks": {
    "preToolUse": [
      {
        "type": "command",
        "bash": "your-bash-command",
        "powershell": "your-powershell-command",
        "cwd": "optional/working/directory",
        "env": { "VAR": "value" },
        "timeoutSec": 30
      }
    ]
  }
}
CampoTipoObligatorioDescripción
bashcuerda / cadenaUno de bash/powershellComando shell para Unix.
cwdcuerda / cadenaNoDirectorio de trabajo para el comando (relativo a la raíz del repositorio o absoluto).
envobjetoNoVariables de entorno que se van a establecer (admite la expansión de variables).
powershellcuerda / cadenaUno de bash/powershellComando shell para Windows.
timeoutSecnúmeroNoTiempo de expiración en segundos. Predeterminado: 30.
type"command"Debe ser "command".

Enlaces de solicitudes

Los ganchos de solicitud envían automáticamente texto como si lo hubiera escrito el usuario. Solo se admiten en sessionStart y se ejecutan antes de que se pase cualquier mensaje inicial a través de --prompt. El texto puede ser una solicitud en lenguaje natural o un comando de barra.

{
  "version": 1,
  "hooks": {
    "sessionStart": [
      {
        "type": "prompt",
        "prompt": "Your prompt text or /slash-command"
      }
    ]
  }
}
CampoTipoObligatorioDescripción
promptcuerda / cadenaTexto que se va a enviar: puede ser un mensaje en lenguaje natural o un comando de barra.
type"prompt"Debe ser "prompt".

Ganchos HTTP

Los hooks HTTP publican la carga útil del evento como JSON en una URL configurada y procesan el cuerpo de la respuesta JSON. Son compatibles con todos los tipos de eventos hook y son útiles para integraciones estilo webhook (servicios de políticas remotas, puntos de auditoría y flujos de trabajo de aprobación) sin necesidad de un ejecutable local.

{
  "version": 1,
  "hooks": {
    "preToolUse": [
      {
        "type": "http",
        "url": "https://policy.example.com/preToolUse"
      }
    ]
  }
}
CampoTipoObligatorioDescripción
type"http"Debe ser "http".
urlcuerda / cadenaDirección URL del punto de conexión. Debe usar http: o https:. No hay sustitución de env var en la propia dirección URL.
headersobjetoNoEncabezados de solicitud. Los valores admiten la sustitución de $VAR / ${VAR} restringida a los nombres enumerados en allowedEnvVars.
allowedEnvVarsstring[]NoLista de permitidos para plantillas de valores de encabezado. La configuración en una matriz no vacía requiere HTTPS.
timeoutSecnúmeroNoTiempo de espera por solicitud en segundos. Predeterminado: 30.
          `timeout` se acepta como alias; `timeoutSec` tiene prioridad. |

| matcher | cuerda / cadena | No | Filtro regex. Solo se admite en preCompact, subagentStart, permissionRequesty notification. Anclado como ^(?:pattern)$. |

El cuerpo de la respuesta usa el mismo esquema JSON que el stdout del enlace de comandos para cada evento. Responda 204 No Content o cualquier 2xx con cuerpo vacío cuando no se requiera ninguna acción.

Advertencia

Los enlaces HTTP no tienen semántica de código de salida. Una respuesta no 2xx es un error de enlace, no una decisión de denegación. Para denegar una llamada de herramienta desde un gancho HTTP preToolUse, devuelva 200 OK con {"permissionDecision":"deny","permissionDecisionReason":"..."}. Para denegar desde un enlace HTTP permissionRequest , devuelva 200 OK con {"behavior":"deny","message":"..."}.

Una entrada de enlace con los campos bash y url se analiza según la variante que coincida primero; el campo no utilizado se ignora de manera silenciosa. type Siempre establezca explícitamente y quite los campos de conexión de comandos cuando utilice conexiones HTTP.

Seguridad de enlace HTTP

HTTPS es necesario en los casos siguientes:

  • Cuando allowedEnvVars es una matriz no vacía, para evitar que las credenciales se envíen a través de texto no cifrado.
  • De forma predeterminada para preToolUse y permissionRequest enlaces, para proteger el canal de decisión de permisos.

La CLI aplica una política SSRF de denegación por defecto: se rechaza cualquier URL cuyo nombre de host se resuelva en una dirección de bucle de retorno, privada, de enlace local o de metadatos de la nube antes de la conexión. DNS se resuelve de antemano y se validan todas las direcciones devueltas (protección contra la suplantación de DNS).

Las siguientes variables de entorno relajan estos valores predeterminados solo para desarrollo y pruebas.

VariableEfectoUso previsto
COPILOT_HOOK_ALLOW_LOCALHOST=1
          `http://` Permite literalmente `localhost`, `127.*`o `[::1]` (reglas HTTPS) y cualquier nombre de host que resuelva completamente el bucle invertido (regla SSRF). | Solo desarrollo local |

| COPILOT_HOOK_ALLOW_HTTP_AUTH_HOOKS=1 | Permite http:// para preToolUse y permissionRequest ganchos en cualquier lugar. | Solo pruebas |

Ambas variables deben establecerse antes de iniciar copilot. No los establezca globalmente, en CI ni en entornos compartidos.

Semántica de errores de enlace HTTP
CondiciónComportamiento
2xx + cuerpo JSON válidoCuerpo analizado según el esquema de salida del evento.
2xx + cuerpo vacío o cuerpo que no sea JSONSin acción.
Respuesta que no es de código 2xxSe produce un error en el enlace. Error registrado. El agente continúa.
Redireccionamiento 3xxSe produce un error en el enlace ("redirección devuelta"). El agente continúa.
Tiempo de esperaSe produce un error en el enlace. Error registrado. El agente continúa.
Error de red, DNS o TLSEl hook falla. Error registrado. El agente continúa.
Error de validación de configuración al cargarSe rechazó todo el archivo de configuración; no hay enlaces desde ese registro de archivos.

Para preToolUse y permissionRequest, un error en el gancho HTTP es de tipo fail-open: el agente continúa con el flujo de permisos predeterminado.

Eventos de enlace

EventSe activa cuandoSalida procesada
sessionStartComienza una sesión nueva o reanudada.Opcional: puede devolver additionalContext para insertar el contexto en toda la sesión, añadido antes de cada turno.
sessionEndLa sesión finaliza.No
userPromptSubmittedEl usuario envía una sugerencia.No
preToolUseAntes de que se ejecute cada herramienta.Sí: puede permitir, denegar o modificar.
postToolUseUna vez que cada herramienta haya completado su tarea correctamente.Sí: puede reemplazar el resultado exitoso (solo hooks programáticos del SDK).
postToolUseFailureDespués de que una herramienta finalice con un error.Sí — puede proporcionar instrucciones de recuperación a través de additionalContext (código 2 de salida para ganchos de comandos).
agentStopEl agente principal finaliza un turno.Sí: puede bloquear y forzar la continuación.
subagentStopSe completa un subagente.Sí: puede bloquear y forzar la continuación.
subagentStartSe genera un subagente (antes de que se ejecute). Devuelve additionalContext antepuesto al mensaje del subagente. Admite matcher para filtrar por nombre del agente.No: no se puede bloquear la creación.
preCompactLa compactación de contexto está a punto de comenzar (manual o automática). Admite matcher para filtrar por desencadenador ("manual" o "auto").No: solo notificación.
permissionRequestAntes de mostrar un cuadro de diálogo de permisos al usuario, después de que las comprobaciones basadas en reglas no encuentren ninguna regla de permiso o denegación coincidente. Admite matcher regex en toolName.Sí: puede permitir o denegar mediante programación.
errorOccurredSe produce un error durante la ejecución.No
notificationSe desencadena de forma asincrónica cuando la CLI emite una notificación del sistema (finalización del shell, finalización del agente o inactividad, notificaciones de permisos, diálogos de solicitud). Fire-and-forget: nunca bloquea la sesión. Admite matcher regex en notification_type.Opcional: puede insertar additionalContext en la sesión.

Cargas de entrada de eventos de enlace

Cada evento de enlace entrega una carga JSON al controlador de enlace. Se admiten dos formatos de carga, seleccionados por el nombre de evento usado en la configuración del enlace:

  • formato camelCase : configure el nombre del evento en camelCase (por ejemplo, sessionStart). Los campos emplean el formato camelCase.

          VS Code formato compatible** : configure el nombre del evento en PascalCase (por ejemplo, `SessionStart`). Los campos usan snake_case para coincidir con el formato de extensión VS CodeCopilot.

sessionStart / SessionStart

          **entrada CamelCase:**
{
    sessionId: string;
    timestamp: number;      // Unix timestamp in milliseconds
    cwd: string;
    source: "startup" | "resume" | "new";
    initialPrompt?: string;
}
          **
          VS Code entrada compatible:**
{
    hook_event_name: "SessionStart";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    source: "startup" | "resume" | "new";
    initial_prompt?: string;
}

sessionEnd / SessionEnd

          **entrada CamelCase:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    reason: "complete" | "error" | "abort" | "timeout" | "user_exit";
}
          **
          VS Code entrada compatible:**
{
    hook_event_name: "SessionEnd";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    reason: "complete" | "error" | "abort" | "timeout" | "user_exit";
}

userPromptSubmitted / UserPromptSubmit

          **entrada CamelCase:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    prompt: string;
}
          **
          VS Code entrada compatible:**
{
    hook_event_name: "UserPromptSubmit";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    prompt: string;
}

preToolUse / PreToolUse

          **entrada CamelCase:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    toolName: string;
    toolArgs: unknown;
}
          **
          VS Code entrada compatible:**

Cuando se configura con el nombre del evento PreToolUse PascalCase, la carga utiliza nombres de campo snake_case para que coincidan con el formato de extensión VS CodeCopilot.

{
    hook_event_name: "PreToolUse";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    tool_name: string;
    tool_input: unknown;    // Tool arguments (parsed from JSON string when possible)
}

postToolUse / PostToolUse

          **entrada CamelCase:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    toolName: string;
    toolArgs: unknown;
    toolResult: {
        resultType: "success";
        textResultForLlm: string;
    }
}
          **
          VS Code entrada compatible:**
{
    hook_event_name: "PostToolUse";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    tool_name: string;
    tool_input: unknown;
    tool_result: {
        result_type: "success" | "failure" | "denied" | "error";
        text_result_for_llm: string;
    }
}

postToolUseFailure / PostToolUseFailure

          **entrada CamelCase:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    toolName: string;
    toolArgs: unknown;
    error: string;
}
          **
          VS Code entrada compatible:**
{
    hook_event_name: "PostToolUseFailure";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    tool_name: string;
    tool_input: unknown;
    error: string;
}

agentStop / Stop

          **entrada CamelCase:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    transcriptPath: string;
    stopReason: "end_turn";
}
          **
          VS Code entrada compatible:**
{
    hook_event_name: "Stop";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    transcript_path: string;
    stop_reason: "end_turn";
}

subagentStart

          **Entrada:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    transcriptPath: string;
    agentName: string;
    agentDisplayName?: string;
    agentDescription?: string;
}

subagentStop / SubagentStop

          **entrada CamelCase:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    transcriptPath: string;
    agentName: string;
    agentDisplayName?: string;
    stopReason: "end_turn";
}
          **
          VS Code entrada compatible:**
{
    hook_event_name: "SubagentStop";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    transcript_path: string;
    agent_name: string;
    agent_display_name?: string;
    stop_reason: "end_turn";
}

errorOccurred / ErrorOccurred

          **entrada CamelCase:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    error: {
        message: string;
        name: string;
        stack?: string;
    };
    errorContext: "model_call" | "tool_execution" | "system" | "user_input";
    recoverable: boolean;
}
          **
          VS Code entrada compatible:**
{
    hook_event_name: "ErrorOccurred";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    error: {
        message: string;
        name: string;
        stack?: string;
    };
    error_context: "model_call" | "tool_execution" | "system" | "user_input";
    recoverable: boolean;
}

preCompact / PreCompact

          **entrada CamelCase:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    transcriptPath: string;
    trigger: "manual" | "auto";
    customInstructions: string;
}
          **
          VS Code entrada compatible:**
{
    hook_event_name: "PreCompact";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    transcript_path: string;
    trigger: "manual" | "auto";
    custom_instructions: string;
}

          `preToolUse` control de decisión

El gancho preToolUse puede controlar la ejecución de la herramienta escribiendo un objeto JSON en stdout (ganchos de comandos) o devolverlo en el cuerpo de la respuesta (ganchos HTTP).

CampoValoresDescripción
permissionDecision
          `"allow"`, , `"deny"`, `"ask"` | Si se ejecuta la herramienta. La salida vacía usa el comportamiento predeterminado. |

| permissionDecisionReason | cuerda / cadena | Motivo que se muestra al agente. Se recomienda cuando la decisión es "deny" o "ask". | | modifiedArgs | unknown | Reemplaza toda la entrada de la herramienta antes de la ejecución. Solo es válido cuando permissionDecision no es "deny" o "ask". | | additionalContext | cuerda / cadena | Puesto en cola como contexto para el siguiente turno del modelo. Solo es válido cuando permissionDecision no es "deny" o "ask". |

Nota:

El VS Code alias (PreToolUse) también acepta hookSpecificOutput.{permissionDecision, permissionDecisionReason, updatedInput, additionalContext} anidados. updatedInput se normaliza en modifiedArgs. Los campos de nivel superior se aceptan como opción por defecto.

          `agentStop`
           / 
          `subagentStop` control de decisión
CampoValoresDescripción
decision
          `"block"`, `"allow"` | 
          `"block"` obliga a otro agente a realizar un turno usando `reason` como solicitud. |

| reason | cuerda / cadena | Solicite el siguiente turno cuando decision sea "block". |

          `permissionRequest` control de decisión

El permissionRequest gancho se activa cuando se va a mostrar un cuadro de diálogo de permisos de nivel de herramienta. Se activa después de que las comprobaciones de permisiones basadas en reglas no encuentran ninguna regla de permisión o denegación coincidente. Úselo para aprobar o denegar llamadas a herramientas mediante programación, especialmente útiles en el modo de canalización (-p) y entornos de CI en los que no haya ninguna solicitud interactiva disponible.

          **Comparador:** Expresión regular opcional probada en `toolName`. Cuando se establece, el gancho se activa solo para los nombres de herramientas coincidentes.

Genera JSON en stdout para controlar la decisión de permisos:

CampoValoresDescripción
behavior
          `"allow"`, `"deny"` | Aprobar o denegar la llamada a la herramienta. |

| message | cuerda / cadena | Motivo comunicado al LLM cuando se rechaza. | | interrupt | boolean | Cuando true se combina con "deny", detiene completamente el agente. |

Devuelve una salida vacía o {} para pasar al comportamiento predeterminado (mostrar el cuadro de diálogo al usuario o denegar en modo de canalización). En el caso de los ganchos de comandos, el código de salida 2 se trata como deny; stdout JSON (si existe) se combina con {"behavior":"deny"}, y se ignora stderr.

          `notification` gancho

El notification gancho se dispara de forma asincrónica cuando la CLI emite una notificación de sistema. Estos enlaces se activan y olvidan: nunca bloquean la sesión y se registran y omiten los errores.

          **Entrada:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    hook_event_name: "Notification";
    message: string;           // Human-readable notification text
    title?: string;            // Short title (e.g., "Permission needed", "Shell completed")
    notification_type: string; // One of the types listed below
}
          **Tipos de notificación:**
TipoCuando se activa
shell_completedUn comando de shell en segundo plano (asincrónico) ha finalizado.
shell_detached_completedSe completa una sesión de shell desconectada
agent_completedUn subagente en segundo plano finaliza (completado o fallido)
agent_idleUn agente en segundo plano finaliza un turno y entra en estado inactivo (esperando write_agent)
permission_promptEl agente solicita permiso para ejecutar una herramienta.
elicitation_dialogEl agente solicita información adicional del usuario.
          **Salida:**
{
    additionalContext?: string; // Injected into the session as a user message
}

Si additionalContext se devuelve, el texto se inserta en la sesión como mensaje de usuario antepuesto. Esto puede desencadenar el procesamiento adicional del agente si la sesión está inactiva. Devuelve {} o una salida vacía para no realizar ninguna acción.

          **Buscador de coincidencias:** Regex opcional en `notification_type`. El patrón está anclado como `^(?:pattern)$`. 
          `matcher` Omitir para recibir todos los tipos de notificación.

Nombres de herramientas para la coincidencia de ganchos

Nombre de la herramientaDescripción
bashEjecute comandos de shell (Unix).
powershellEjecute comandos de shell (Windows).
viewLeer el contenido del archivo.
editModifique el contenido del archivo.
createCree nuevos archivos.
globBuscar archivos por patrón.
grepBuscar contenido del archivo.
web_fetchCapturar páginas web.
taskEjecutar tareas de subagentes.

Si se configuran varios ganchos del mismo tipo, se ejecutan en orden. Para preToolUse, si algún gancho devuelve "deny", la herramienta se bloquea. Los códigos de salida solo se aplican a los enlaces de comandos; para los enlaces HTTP, consulte la semántica del error de enlace HTTP. En postToolUseFailure el caso de los enlaces de comandos, salir con código 2 hace que stderr se devuelva como guía de recuperación para el asistente. En permissionRequest el caso de los enlaces de comandos, el código 2 de salida se trata como un valor deny; stdout JSON (si existe) se combina con {"behavior":"deny"}y se omite stderr. Los errores de enlace (códigos de salida distintos de cero o tiempos de espera) se registran y omiten; nunca bloquean la ejecución del agente.

Configuración del servidor MCP

Los servidores MCP proporcionan herramientas adicionales al agente de la CLI. Configure servidores persistentes en ~/.copilot/mcp-config.json. Use --additional-mcp-config para agregar servidores para una sola sesión.

          `copilot mcp` subcomando

Use copilot mcp para administrar configuraciones de servidor MCP desde la línea de comandos sin iniciar una sesión interactiva.

SubcommandDescripción
list [--json]Enumere todos los servidores MCP configurados agrupados por origen.
get <name> [--json]Mostrar la configuración y las herramientas de un servidor específico.
add <name>Agregue un servidor a la configuración del usuario. Escribe en ~/.copilot/mcp-config.json.
remove <name>Quite un servidor de nivel de usuario. Los servidores del espacio de trabajo deben ser editados directamente en sus archivos de configuración.
          **
          `copilot mcp add` Opciones:**
OpciónDescripción
-- <command> [args...]Comandos y argumentos para servidores locales (stdio).
--url <url>Dirección URL de los servidores remotos.
--type <type>Tipo de transporte: local, stdio, httpo sse.
--env KEY=VALUEVariable de entorno (repetible).
--header KEY=VALUEEncabezado HTTP para servidores remotos (repetible).
--tools <tools>Filtro de herramientas: "*" para todos, una lista separada por comas o "" para ninguna.
--timeout <ms>Tiempo de espera en milisegundos.
--jsonLa salida agregó la configuración como JSON.
--show-secretsMostrar los valores completos de las variables de entorno y de los encabezados.
--config-dir <path>Ruta de acceso al directorio de configuración.

Precaución

          `--show-secrets` puede imprimir valores confidenciales de variables de entorno y encabezados en el terminal o los registros. Use solo esta opción en entornos de confianza y evite copiar, pegar o capturar la salida en registros o historial compartidos.

Tipos de transporte

TipoDescripciónCampos obligatorios
local / stdioProceso local que se comunica a través de stdin/stdout.
          `command`, `args` |

| http | Servidor remoto mediante transporte HTTP transmisible. | url | | sse | Servidor remoto mediante transporte de eventos enviados por el servidor. | url |

Campos de configuración del servidor local

CampoObligatorioDescripción
commandComando para iniciar el servidor.
argsArgumentos de comando (matriz).
toolsHerramientas que se van a habilitar: ["*"] para todos o una lista de nombres de herramientas específicos.
envNoVariables de entorno. Admite $VAR, ${VAR} y ${VAR:-default} expansión.
cwdNoDirectorio de trabajo para el servidor.
timeoutNoTiempo de espera en milisegundos para la llamada a herramienta.
typeNo
          `"local"` o `"stdio"`. Predeterminado: `"local"`. |

Campos de configuración de servidor remoto

CampoObligatorioDescripción
type
          `"http"` o `"sse"`. |

| url | Sí | Dirección URL del servidor. | | tools | Sí | Herramientas para habilitar. | | headers | No | Encabezados HTTP. Admite la expansión de variables. | | oauthClientId | No | Identificador de cliente de OAuth estático (omite el registro dinámico). | | oauthPublicClient | No | Si el cliente de OAuth es público. Predeterminado: true. | | oidc | No | Habilite la inserción de tokens OIDC. Cuando true, inserta una GITHUB_COPILOT_OIDC_MCP_TOKEN variable de entorno (servidores locales) o un Bearer``Authorization encabezado (servidores remotos). | | timeout | No | Tiempo de espera en milisegundos para la llamada a herramienta. |

Re-autenticación de OAuth

Los servidores MCP remotos que usan OAuth pueden mostrar un needs-auth estado cuando un token expira o cuando se requiere una cuenta diferente. Use /mcp auth <server-name> para desencadenar un flujo de OAuth nuevo. Se abre un mensaje de autenticación del explorador, lo que le permite iniciar sesión o cambiar de cuenta. Después de completar el flujo, el servidor se vuelve a conectar automáticamente.

Asignación de filtros

Controlar cómo se procesa la salida de la herramienta MCP mediante el filterMapping campo en la configuración de un servidor.

ModoDescripción
noneSin filtrado.
markdownDar formato a la salida como Markdown.
hidden_charactersQuite caracteres ocultos o de control. Predeterminado.

Servidores MCP integrados

La CLI incluye servidores MCP integrados que están disponibles sin configuración adicional.

ServidorDescripción
github-mcp-server
          GitHub Integración de API: problemas, solicitudes de incorporación de cambios, confirmaciones, búsqueda de código y GitHub Actions. |

| playwright | Automatización del explorador: navegue, haga clic, escriba, captura de pantalla y control de formularios. | | fetch | Solicitudes HTTP mediante la herramienta fetch. | | time | Utilidades de tiempo: get_current_time y convert_time. |

Use --disable-builtin-mcps para deshabilitar todos los servidores integrados o --disable-mcp-server SERVER-NAME para deshabilitar uno específico.

Nomenclatura del servidor MCP

Los nombres de servidor pueden contener cualquier carácter imprimible, incluidos espacios, caracteres Unicode y puntuación. No se permiten caracteres de control (U+0000–U+001F, U+007F) y la llave de cierre (}). Los nombres de servidor se usan como prefijos para los nombres de herramientas; por ejemplo, un servidor denominado my-server genera nombres de herramientas como my-server-fetchy un servidor denominado My Server produce My Server-fetch.

Niveles de confianza del servidor MCP

Los servidores MCP se cargan desde varios orígenes, cada uno con un nivel de confianza diferente.

FuenteNivel de confianzaRevisión necesaria
IntegradoAltoNo
Repositorio (.github/mcp.json)MedioRecomendado
Área de trabajo (.mcp.json)MedioRecomendado
Configuración del usuario (~/.copilot/mcp-config.json)User-definedResponsabilidad del usuario
Servidores remotosLowSiempre

Todas las invocaciones de la herramienta MCP requieren permiso explícito. Esto se aplica incluso a las operaciones de solo lectura en servicios externos.

Lista de autorización empresarial de MCP

          GitHub Enterprise las organizaciones pueden aplicar una lista blanca de servidores MCP permitidos. Cuando la CLI está activa, evalúa cada servidor no predeterminado según la política empresarial antes de establecer la conexión.

Cuando se detecta una GitHub Enterprise directiva del Registro (o la MCP_ENTERPRISE_ALLOWLIST marca de característica experimental está habilitada), la CLI:

  1. Calcula una huella digital para cada servidor no predeterminado configurado en función de su comando, argumentos y dirección URL remota.
  2. Envía las huellas digitales al punto de conexión de evaluación de lista de permitidos de empresa.
  3. Permite solo servidores cuyas huellas digitales están aprobadas; todos los demás se bloquean con un mensaje que menciona el nombre de la empresa.

Esta comprobación está cerrada por error: si el punto de conexión de evaluación no es accesible o devuelve un error, los servidores no predeterminados se bloquean hasta que se pueda comprobar la directiva.

Cuando un servidor está bloqueado por una lista de permitidos de empresa, la CLI muestra:

MCP server "SERVER-NAME" was blocked by your enterprise "ENTERPRISE-NAME".
Contact your enterprise administrator to add this server to the allowlist.

Los servidores predeterminados integrados siempre están exentos de la aplicación de la lista de permitidos.

Migración desde .vscode/mcp.json

Si el proyecto usa .vscode/mcp.json (formato de configuración MCP de VS Code), migre a .mcp.json para CLI de GitHub Copilot. La migración reasigna la servers tecla a mcpServers.

          **Intérpretes de comandos POSIX (bash, zsh, fish y otros):**
jq '{mcpServers: .servers}' .vscode/mcp.json > .mcp.json

Requiere jq.

          **PowerShell**:
pwsh -NoProfile -Command "`$json = Get-Content '.vscode/mcp.json' -Raw | ConvertFrom-Json; `$content = ([pscustomobject]@{ mcpServers = `$json.servers } | ConvertTo-Json -Depth 100); [System.IO.File]::WriteAllText('.mcp.json', `$content, (New-Object System.Text.UTF8Encoding `$false))"

En Windows, reemplace pwsh por powershell si usa Windows PowerShell en lugar de PowerShell Core.

Referencia sobre aptitudes

Las aptitudes son archivos markdown que amplían lo que puede hacer la CLI. Cada aptitud reside en su propio directorio que contiene un SKILL.md archivo. Cuando se invoca (a través de /SKILL-NAME o automáticamente por el agente), el contenido de la habilidad se inserta en la conversación.

Campos de texto preliminar de aptitudes

CampoTipoObligatorioDescripción
namecuerda / cadenaIdentificador único de la aptitud. Solo letras, números y guiones. Máximo de 64 caracteres.
descriptioncuerda / cadenaQué hace la aptitud y cuándo usarla. Máximo de 1024 caracteres.
allowed-tools"string" o "string[]"NoLista separada por comas o matriz YAML de herramientas que se permiten automáticamente cuando la aptitud está activa. Utilice "*" para todas las herramientas.
user-invocablebooleanNoSi los usuarios pueden invocar la aptitud con /SKILL-NAME. Predeterminado: true.
disable-model-invocationbooleanNoImpedir que el agente invoque automáticamente esta aptitud. Predeterminado: false.

Ubicaciones de habilidades

Las habilidades se cargan desde estas ubicaciones en orden de prioridad (la primera encontrada prevalece sobre nombres duplicados).

UbicaciónÁmbitoDescripción
.github/skills/ProyectoHabilidades específicas del proyecto.
.agents/skills/ProyectoUbicación alternativa del proyecto.
.claude/skills/ProyectoUbicación compatible con Claude.
Padre .github/skills/InheritedCompatibilidad con directorios primarios de un repositorio.
~/.copilot/skills/PersonalHabilidades personales para todos los proyectos.
~/.agents/skills/PersonalHabilidades del agente compartidas en todos los proyectos.
~/.claude/skills/PersonalUbicación personal compatible con Claude.
Directorios de complementosPluginAptitudes de complementos instalados.
COPILOT_SKILLS_DIRSPersonalizadaDirectorios adicionales (separados por comas).
(agrupado con la CLI)IntegradoFuncionalidades incluidas con la CLI. Prioridad más baja: invalidable por cualquier otro origen.

Comandos (formato de habilidad alternativo)

Los comandos son una alternativa a las habilidades almacenadas como archivos individuales .md en .claude/commands/. El nombre del comando se deriva del nombre de archivo. Los archivos de comandos usan un formato simplificado (sin name campo necesario) y admiten description, allowed-toolsy disable-model-invocation. Los comandos tienen menor prioridad que las aptitudes con el mismo nombre.

Referencia de agentes personalizados

Los agentes personalizados son agentes de IA especializados definidos en archivos Markdown. El nombre de archivo (sin la extensión) se convierte en el identificador del agente. Use .agent.md o .md como extensión de archivo.

Agentes integrados

AgenteModelo predeterminadoDescripción
code-reviewclaude-sonnet-4.5Revisión de código con alta relación señal a ruido. Analiza diferencias en el código para detectar fallos, problemas de seguridad y errores lógicos.
configure-copilotVaríaSubagente integrado para administrar la CLI de Copilot configuración mediante lenguaje natural: agregar servidores MCP, instalar agentes y administrar aptitudes. Solo está disponible en modo experimental.
exploreclaude-haiku-4.5Exploración rápida del código base. Busca archivos, lee código y responde preguntas. Devuelve respuestas centradas en menos de 300 palabras. Seguro para ejecutarse en paralelo.
general-purposeclaude-sonnet-4.5Agente de funcionalidad completa para tareas complejas de varios pasos. Se ejecuta en una ventana de contexto independiente.
researchclaude-sonnet-4.6Agente de investigación profundo. Genera un informe basado en la información de su código base, en repositorios pertinentes y en la web.
rubber-duckmodelo complementarioUtilice un modelo complementario para proporcionar una crítica constructiva de propuestas, diseños, implementaciones o pruebas. Identifica puntos débiles y sugiere mejoras. Cuando se utiliza Claude, emplea un modelo GPT; cuando se utiliza GPT, emplea Claude Opus 4.7. Nunca realiza cambios directos en el código. Solo está disponible en modo experimental.
taskclaude-haiku-4.5Ejecución de comandos (pruebas, compilaciones, lints). Devuelve un breve resumen en caso de éxito y la salida completa en caso de fallo.

Campos de frontmatter del agente personalizado

CampoTipoObligatorioDescripción
descriptioncuerda / cadenaDescripción que se muestra en la lista del agente y en la herramienta task.
inferbooleanNoPermitir la delegación automática del agente principal. Predeterminado: true.
mcp-serversobjetoNoServidores MCP para conectarse. Usa el mismo esquema que ~/.copilot/mcp-config.json.
modelcuerda / cadenaNoModelo de IA para este agente. Cuando no se establece, hereda el modelo del agente externo. Cuando el modelo de sesión se establece en Auto (seleccionado por el servidor), los subagentes siempre heredan el modelo de sesión resuelto independientemente de este campo.
namecuerda / cadenaNoNombre para mostrar. El valor predeterminado es el nombre de archivo.
toolsstring[]NoHerramientas disponibles para el agente. Valor predeterminado: ["*"] (todas las herramientas).

Ubicaciones de agente personalizadas

ÁmbitoUbicación
Proyecto
          `.github/agents/` o `.claude/agents/` |

| Usuario | ~/.copilot/agents/ o ~/.claude/agents/ | | Plugin | <plugin>/agents/ |

Los agentes a nivel de proyecto tienen prioridad sobre los agentes a nivel de usuario. Los agentes de complementos tienen la prioridad más baja.

Límites de subagentes

La CLI aplica límites de profundidad y concurrencia para evitar la generación incontrolada de agentes.

LimitPredeterminadoVariable del entorno
Profundidad máxima6COPILOT_SUBAGENT_MAX_DEPTH
Número máximo de simultáneos32COPILOT_SUBAGENT_MAX_CONCURRENT
          **La profundidad** cuenta cuántos agentes se anidan entre sí. Cuando se alcanza el límite de profundidad, el agente más interno no puede generar más subagentes. 
          **Concurrencia** cuenta cuántos subagentes se ejecutan de manera simultánea en todo el árbol de sesión. Cuando se alcanza el límite, se rechazan las nuevas solicitudes de subagentes hasta que un agente activo finaliza su tarea. Los valores se limitan entre `1` y `256`.

Respuestas de aprobación de permisos

Cuando la CLI solicita permiso para ejecutar una operación, puede responder con las siguientes claves.

KeyEfecto
yPermitir esta solicitud específica una vez.
nDeniegue esta solicitud específica una vez.
!Permitir todas las solicitudes similares para el resto de la sesión.
#Deniegue todas las solicitudes similares para el resto de la sesión.
?Mostrar información detallada sobre la solicitud.

Las aprobaciones de sesión se restablecen al ejecutar /clear o iniciar una nueva sesión.

Supervisión de OpenTelemetry

          CLI de Copilot puede exportar seguimientos y métricas a través [de OpenTelemetry](https://opentelemetry.io/) (OTel), lo que proporciona visibilidad sobre las interacciones del agente, las llamadas LLM, las ejecuciones de herramientas y el uso de tokens. Todos los nombres y atributos de señal siguen las [convenciones semánticas de OTel GenAI](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/gen-ai/).

OTel está desactivado por defecto y no genera ninguna sobrecarga. Se activa cuando se cumple cualquiera de las condiciones siguientes:

  • COPILOT_OTEL_ENABLED=true
  • OTEL_EXPORTER_OTLP_ENDPOINT está establecido
  • COPILOT_OTEL_FILE_EXPORTER_PATH está establecido

Variables de entorno de OTel

VariablePredeterminadoDescripción
COPILOT_OTEL_ENABLEDfalseHabilite explícitamente OTel. No es necesario si OTEL_EXPORTER_OTLP_ENDPOINT está configurado.
OTEL_EXPORTER_OTLP_ENDPOINTDirección URL del punto de conexión de OTLP. Si se establece esta opción, se habilita automáticamente OTel.
COPILOT_OTEL_EXPORTER_TYPEotlp-httpTipo de exportador: otlp-http o file. Selecciona automáticamente file cuando COPILOT_OTEL_FILE_EXPORTER_PATH se establece.
OTEL_SERVICE_NAMEgithub-copilotNombre del servicio en los atributos de recursos.
OTEL_RESOURCE_ATTRIBUTESAtributos de recursos adicionales como pares separados por comas key=value . Utiliza la codificación de porcentaje para caracteres especiales.
OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENTfalseCapturar el contenido completo del mensaje y de la respuesta. Consulte Captura de contenido.
OTEL_LOG_LEVELNivel de registro de diagnóstico de OTel: NONE, ERROR, WARN``INFO, DEBUG, , VERBOSE, ALL.
COPILOT_OTEL_FILE_EXPORTER_PATHEscriba todas las señales en este archivo como líneas JSON. Si se establece esta opción, se habilita automáticamente OTel.
COPILOT_OTEL_SOURCE_NAMEgithub.copilotNombre del ámbito de instrumentación para el rastreador y el medidor.
OTEL_EXPORTER_OTLP_HEADERSEncabezados de autenticación para el exportador de OTLP (por ejemplo, Authorization=Bearer token).

Huellas

El entorno de ejecución emite un árbol jerárquico de segmentos para cada interacción del agente. Cada árbol contiene un intervalo raíz invoke_agent, con intervalos secundarios chat y execute_tool.

          `invoke_agent` atributos de span

Envuelve la invocación completa del agente: todas las llamadas LLM y las ejecuciones de herramientas de un mensaje de usuario.

  • Las sesiones de nivel superior usan el tipo de traza CLIENT (invocación de servicio remoto) con server.address y server.port.
  • Las invocaciones de subagentes (por ejemplo, explorar, tarea) usan el tipo de intervalo INTERNAL (en proceso) sin atributos de servidor.
AtributoDescripciónTipo de intervalo
gen_ai.operation.nameinvoke_agentAmbas
gen_ai.provider.nameProveedor (por ejemplo, github, anthropic)Ambas
gen_ai.agent.idIdentificador de sesiónAmbas
gen_ai.agent.nameNombre del agente (cuando está disponible)Ambas
gen_ai.agent.descriptionDescripción del agente (cuando está disponible)Ambas
gen_ai.agent.versionVersión del entorno de ejecuciónAmbas
gen_ai.conversation.idIdentificador de sesiónAmbas
gen_ai.request.modelModelo solicitadoAmbas
gen_ai.response.finish_reasons
          `["stop"]` o `["error"]` | Ambas |

| gen_ai.usage.input_tokens | Total de tokens de entrada (todos los turnos) | Ambas | | gen_ai.usage.output_tokens | Total de tokens de salida (todos los turnos) | Ambas | | gen_ai.usage.cache_read.input_tokens | Lectura de tokens de entrada almacenados en caché | Ambas | | gen_ai.usage.cache_creation.input_tokens | Tokens de entrada creados y almacenados en caché | Ambas | | github.copilot.turn_count | Número de recorridos de ida y vuelta de LLM | Ambas | | github.copilot.cost | Costo monetario | Ambas | | github.copilot.aiu | Unidades de IA consumidas | Ambas | | server.address | Nombre de host del servidor | Solo CLIENT | | server.port | Puerto de servidor | Solo CLIENT | | error.type | Nombre de clase de error (en caso de error) | Ambas | | gen_ai.input.messages | Mensajes de entrada completos como JSON (solo captura de contenido) | Ambas | | gen_ai.output.messages | Mensajes de salida completos como JSON (solo captura de contenido) | Ambas | | gen_ai.system_instructions | Contenido del mensaje del sistema como JSON (captura solo de contenido) | Ambas | | gen_ai.tool.definitions | Esquemas de herramientas como JSON (solo captura de contenido) | Ambas |

          `chat` atributos de span

Un intervalo por solicitud de LLM. Tipo de intervalo: CLIENT.

AtributoDescripción
gen_ai.operation.namechat
gen_ai.provider.nameNombre del proveedor
gen_ai.request.modelModelo solicitado
gen_ai.conversation.idIdentificador de sesión
gen_ai.response.idID de respuesta
gen_ai.response.modelModelo resuelto
gen_ai.response.finish_reasonsMotivos de detención
gen_ai.usage.input_tokensTokens de entrada en este turno
gen_ai.usage.output_tokensTokens de salida este turno
gen_ai.usage.cache_read.input_tokensLectura de tokens almacenados en caché
gen_ai.usage.cache_creation.input_tokensTokens creados y almacenados en caché
github.copilot.costCosto de turnos
github.copilot.aiuUnidades de IA consumidas en este turno
github.copilot.server_durationDuración del lado servidor
github.copilot.initiatorIniciador de solicitudes
github.copilot.turn_idIdentificador de turno
github.copilot.interaction_idIdentificador de interacción
github.copilot.time_to_first_chunkTiempo para el primer fragmento de streaming, en segundos (solo streaming)
server.addressNombre de host del servidor
server.portPuerto de servidor
error.typeNombre de clase de error (en caso de error)
gen_ai.input.messagesMensajes de solicitud completos como JSON (solo captura de contenido)
gen_ai.output.messagesMensajes de respuesta completos como JSON (solo captura de contenido)
gen_ai.system_instructionsContenido del mensaje del sistema como JSON (captura solo de contenido)

          `execute_tool` atributos de span

Un intervalo por llamada a herramienta. Tipo de intervalo: INTERNAL.

AtributoDescripción
gen_ai.operation.nameexecute_tool
gen_ai.provider.nameNombre del proveedor (cuando está disponible)
gen_ai.tool.nameNombre de la herramienta (por ejemplo, readFile)
gen_ai.tool.typefunction
gen_ai.tool.call.idIdentificador de llamada de herramienta
gen_ai.tool.descriptionDescripción de la herramienta
error.typeNombre de clase de error (en caso de error)
gen_ai.tool.call.argumentsArgumentos de entrada de herramientas como JSON (solo captura de contenido)
gen_ai.tool.call.resultSalida de la herramienta como JSON (solo captura de contenido)

Métricas

Métricas de convención de GenAI

MétricaTipoUnidadDescripción
gen_ai.client.operation.durationHistogramasDuración de la llamada a la API de LLM y de la invocación del agente
gen_ai.client.token.usageHistogramatokensRecuentos de tokens por tipo (input/output)
gen_ai.client.operation.time_to_first_chunkHistogramasHora de recibir el primer fragmento de streaming
gen_ai.client.operation.time_per_output_chunkHistogramasLatencia entre fragmentos después del primer fragmento

Métricas específicas del proveedor

MétricaTipoUnidadDescripción
github.copilot.tool.call.countContadorllamadasInvocaciones de herramientas por gen_ai.tool.name y success
github.copilot.tool.call.durationHistogramasLatencia de ejecución de herramientas por gen_ai.tool.name
github.copilot.agent.turn.countHistogramaturnosRecorridos de ida y vuelta de LLM por cada invocación de agente

Eventos de intervalo

Eventos de ciclo de vida registrados en el intervalo activo chat o invoke_agent.

EventDescripciónAtributos clave
github.copilot.hook.startUn gancho comenzó a ejecutarse
          `github.copilot.hook.type`, `github.copilot.hook.invocation_id` |

| github.copilot.hook.end | Un enlace se ha completado correctamente | github.copilot.hook.type, github.copilot.hook.invocation_id | | github.copilot.hook.error | Error de enlace | github.copilot.hook.type, , github.copilot.hook.invocation_id, github.copilot.hook.error_message | | github.copilot.session.truncation | El historial de conversaciones se ha truncado | github.copilot.token_limit, github.copilot.pre_tokens, github.copilot.post_tokens, github.copilot.pre_messages, github.copilot.post_messages, github.copilot.tokens_removed, , github.copilot.messages_removed``github.copilot.performed_by | | github.copilot.session.compaction_start | Se inició la compactación de historia | Ninguno | | github.copilot.session.compaction_complete | Compactación del historial completada | github.copilot.success, github.copilot.pre_tokens, github.copilot.post_tokens, github.copilot.tokens_removed, , github.copilot.messages_removed( github.copilot.message solo captura de contenido) | | github.copilot.skill.invoked | Se invocó una habilidad | github.copilot.skill.name, github.copilot.skill.path, , github.copilot.skill.plugin_name, github.copilot.skill.plugin_version | | github.copilot.session.shutdown | La sesión se está cerrando | github.copilot.shutdown_type, github.copilot.total_premium_requests, github.copilot.lines_added, , github.copilot.lines_removed, github.copilot.files_modified_count | | github.copilot.session.abort | El usuario canceló la operación actual | github.copilot.abort_reason | | exception | Error de sesión | github.copilot.error_type, , github.copilot.error_status_code, github.copilot.error_provider_call_id |

Atributos del recurso

Todas las señales llevan estos atributos de recurso.

AtributoImportancia
service.name
          `github-copilot` (configurable a través de `OTEL_SERVICE_NAME`) |

| service.version | Versión del entorno de ejecución |

Captura de contenido

De forma predeterminada, no se captura ningún contenido de solicitud, respuestas o argumentos de herramienta, solo metadatos como nombres de modelo, recuentos de tokens y duraciones. Para capturar contenido completo, establezca OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true.

Advertencia

La captura de contenido puede incluir información confidencial, como el código, el contenido del archivo y las indicaciones del usuario. Habilite esto solo en entornos de confianza.

Cuando la captura de contenido está habilitada, se rellenan los atributos siguientes.

AtributoContenido
gen_ai.input.messagesMensajes de solicitud completos (JSON)
gen_ai.output.messagesMensajes de respuesta completos (JSON)
gen_ai.system_instructionsContenido del mensaje del sistema (JSON)
gen_ai.tool.definitionsEsquemas de herramientas (JSON)
gen_ai.tool.call.argumentsLos argumentos de entrada de la herramienta
gen_ai.tool.call.resultSalida de la herramienta

Lectura adicional