Copilot Autofix para alertas de seguridad de código (versión preliminar)

Copilot Autofix proporciona corrección con agentes para las alertas de examen de código y para las vulnerabilidades de seguridad del examen de dependencias en GitHub Advanced Security para Azure DevOps. Abra una alerta compatible y seleccione Generar corrección. El agente de código de Copilot puede explorar el contexto pertinente del repositorio, revisar y refinar los cambios propuestos y abrir una solicitud de incorporación de cambios con una corrección sugerida.

Usted revisa, prueba y combina el cambio a través de su flujo de trabajo normal de solicitudes de incorporación de cambios. Los pasos son los mismos para ambos tipos de alerta. Elija la lista de alertas pertinente para iniciarse y, a continuación, use el analizador correspondiente para comprobar la corrección combinada.

Note

Esta característica está en versión preliminar pública limitada. Microsoft actualmente no acepta usuarios adicionales para la versión preliminar.

La funcionalidad puede cambiar o quitarse sin previo aviso. Las características en versión preliminar no tienen ningún Acuerdo de Nivel de Servicio (SLA) ni soporte técnico limitado.

GitHub Advanced Security para Azure DevOps funciona con Azure Repos. Para usar GitHub Advanced Security con repositorios de GitHub, consulte GitHub Advanced Security.

Prerequisites

Category Requirements
Permisos - Para ver un resumen de todas las alertas de un repositorio: permisos de colaborador para el repositorio.
- Para descartar alertas en Seguridad Avanzada: permisos de administrador de Project.
- Para administrar permisos en Advanced Security: miembro del grupo Project Collection Administrators o con el permiso Advanced Security: administrar configuraciones establecido en Permitir.

Para obtener más información sobre los permisos de Advanced Security, consulte Administrar permisos de Advanced Security.

  • Examen de código o análisis de dependencias configurados y que generan alertas para el repositorio.
  • Al menos una alerta compatible.
  • El permiso del repositorio Seguridad avanzada: ver alertas para el usuario que selecciona Generar corrección.
  • Acceso al grupo de agentes de Azure Pipelines. Copilot Autofix pone en cola un trabajo de una canalización alojada por Microsoft para generar y publicar la corrección. La ejecución requiere que haya una tarea en paralelo disponible. Si todos los trabajos paralelos están en uso, la corrección permanece en cola hasta que la capacidad esté disponible.

Copilot Autofix realiza operaciones de repositorio mediante una identidad dedicada denominada GitHub Copilot ({organization}), no una cuenta del servicio de compilación de proyectos o colecciones. El servicio concede automáticamente a la identidad los permisos siguientes:

Operation Permiso
Acceso al proyecto Ver información de nivel de proyecto
Clonación del repositorio Lectura
Crea y sube la rama de corrección Colaboración y creación de una rama
Crear y actualizar la solicitud de incorporación de cambios Contribuir a solicitudes de extracción
Lee la alerta Seguridad avanzada: visualización de alertas
Agregar discusiones de pull request Leer y contribuir a los debates sobre las pull requests
Actualización de la ejecución de la canalización Actualizar información de compilación
Etiquetar la solicitud de incorporación de cambios Crear la etiqueta Copilot Autofix

No es necesario otorgar estos permisos a una cuenta de servicio de compilación. Si su organización usa permisos de denegación explícitos, compruebe que no bloquean la GitHub Copilot ({organization}) identidad.

Cómo funciona Autofix agentic

Agentic Autofix usa los resultados de la alerta y el contexto del repositorio, en lugar de confiar solo en la ubicación del código notificada. El agente de codificación de Copilot puede usar instrucciones personalizadas registradas en el repositorio y aptitudes pertinentes para comprender los estándares de codificación, la arquitectura y los patrones de corrección. Puede revisar y refinar el cambio propuesto antes de abrir una solicitud de incorporación de cambios que contenga:

  • Cambio de código sugerido que soluciona la vulnerabilidad subyacente.
  • Descripción de la alerta que se va a corregir, incluido el identificador de alerta, la gravedad y un resumen del cambio.

Dado que la corrección sugerida tiene en cuenta el contexto más amplio de la base de código, el cambio puede abarcar más que la única línea en la que se generó la alerta y puede incluir cambios en otros archivos cuando sea necesario.

Note

Los datos administrados por Copilot Autofix no se usan para entrenar modelos de lenguaje grandes (LLM).

Importante

Las sugerencias de Copilot Autofix son generadas por un modelo de IA y no se garantiza que sean correctas, completas ni seguras. Revise siempre cuidadosamente la solicitud de incorporación de cambios, compruebe que resuelve la alerta sin introducir nuevos problemas y pruebe los cambios antes de combinarlos.

Alertas compatibles

Tipo de alerta Soporte en versión preliminar pública limitada
Análisis de código Alertas de CodeQL y herramientas de análisis de código de terceros.
Análisis de dependencias Alertas de vulnerabilidades de seguridad. No se incluyen los resultados de malware.
Escaneo de datos confidenciales No está soportado.

Para cualquiera de los tipos de alerta admitidos, Copilot Autofix propone un cambio para que lo revise. No garantiza una corrección para cada hallazgo. Para obtener más información, consulte Corrección no está disponible.

Proporcionar las instrucciones y aptitudes del repositorio

Dé al Autofix con agentes el contexto que quiere que tenga en cuenta al generar una corrección. Registre las instrucciones personalizadas y las aptitudes en el repositorio en las ubicaciones admitidas .github o .agents. Estos archivos pueden ayudar al agente de codificación Copilot a seguir los estándares de codificación del equipo y los flujos de trabajo de corrección establecidos.

Añadir estándares de codificación a las instrucciones personalizadas

Use las instrucciones personalizadas para todo el repositorio, como .github/copilot-instructions.md, para describir cómo deben encajar los cambios en su proyecto. Incluya instrucciones sobre las convenciones de nomenclatura, las bibliotecas aprobadas, los límites arquitectónicos y cómo crear y probar los cambios.

Por ejemplo, si el equipo requiere un asistente de validación de entrada compartido, describa ese requisito en las instrucciones. No suponga que el agente lo deducirá de la alerta.

# Coding standards

- Use the existing input-validation helpers instead of adding new validation logic.
- Follow the naming conventions in the surrounding code.
- Keep dependency changes scoped to the vulnerability being fixed.
- Update the relevant tests when a fix changes behavior.
- Run the documented build and test commands before proposing a change.

Use los nombres y ubicaciones de archivos admitidos de Copilot. Un archivo denominado custom-instructions.md no, por su nombre, establece un archivo de instrucciones de Copilot en todo el repositorio. Para obtener el formato de archivo para todo el repositorio, consulte Agregar instrucciones personalizadas del repositorio para GitHub Copilot.

Agregar aptitudes para las tareas de corrección repetibles

Las aptitudes del repositorio pueden proporcionar instrucciones específicas de la tarea, scripts y recursos de soporte. Almacene una habilidad en un directorio como .github/skills/<skill-name>/ o .agents/skills/<skill-name>/, con sus instrucciones en SKILL.md.

Por ejemplo, una aptitud de actualización de dependencias puede describir el procedimiento de actualización del paquete y las comprobaciones de compatibilidad. Una aptitud de corrección de código puede describir cómo usar sus bibliotecas de seguridad aprobadas. Agentic Autofix puede hacer referencia a habilidades relevantes como parte de la generación de una corrección; no todas las habilidades se aplican a todas las alertas. Para conocer el formato de aptitud, consulte Acerca de las aptitudes del agente.

Importante

Las instrucciones y capacidades del repositorio proporcionan contexto adicional, no una garantía de que una corrección generada cumpla todos los requisitos. Revise el cambio propuesto con respecto a los estándares, ejecute las comprobaciones de validación y compruebe que la vulnerabilidad se resuelve antes de fusionarlo.

Billing

Copilot Autofix se incluye con tu licencia de GitHub Advanced Security para Azure DevOps. Generar una corrección consume créditos de IA del medidor de facturación de Azure de su organización.

Cada generación de correcciones consume tokens, que incluyen tokens de entrada para el contexto de código enviado al modelo, tokens de salida para el cambio sugerido y tokens almacenados en caché que reutilizan el contexto existente.

Para simplificar la facturación, estos tokens se convierten en una unidad estándar denominada crédito de ia de GitHub, donde 1 crédito es igual a 0,01 USD. Los cargos se facturan a la suscripción de Azure vinculada a la organización de Azure DevOps y aparecen como un medidor independiente en Azure Cost Management.

El costo de cada corrección varía con el tamaño del contexto de código circundante y la complejidad del cambio.

Note

La configuración presupuestaria de GitHub Copilot y los límites de usuario configurados en GitHub no se aplican al gasto del medidor de Copilot Autofix en Azure DevOps. Este uso se factura a través de la suscripción de Azure vinculada a la organización de Azure DevOps, no a través de la facturación de GitHub Copilot.

Ver los costes de Autofix por proyecto

Copilot Autofix admite etiquetas de organización y proyecto para que pueda filtrar sus cargos de uso y comparar los costos entre proyectos de Azure DevOps.

  1. En el portal de Azure, abra la suscripción vinculada a la organización de Azure DevOps. Vaya a Administración de costos> > Análisis de costos.
  2. Seleccione el intervalo de fechas que desea revisar.
  3. Agregue un filtro Medidor y seleccione AI Credit for AzDO GAC. Este filtro aísla los cargos de uso de Autofix de otros costos de suscripción.
  4. Agregue un filtro de etiqueta para _organizationname_ y seleccione las organizaciones de Azure DevOps cuyos costos desea ver.
  5. Establezca Agrupar por en la etiqueta _projectname_ para ver el desglose de costos de Autofix por proyecto.

Captura de pantalla del análisis de costos de Azure filtrado por el medidor AI Credit for AzDO GAC y una organización, con costos agrupados por proyecto.

Para revisar fechas individuales, establezca Granularidad en Diaria y cambie la visualización a Tabla. Mantenga los filtros de medidor y organización y la agrupación del proyecto. También puede filtrar la etiqueta _projectname_ para limitar la tabla a proyectos específicos.

Captura de pantalla del análisis de costos de Azure en la vista de tabla diaria en la que se muestran los costos de Autofix por fecha y proyecto, filtrados por el medidor AI Credit for AzDO GAC, una organización y proyectos seleccionados.

Activar Copilot Autofix

Puede habilitar Copilot Autofix a nivel de la organización, el proyecto o el repositorio. Al habilitar Autofix en un ámbito más general, la configuración se aplica a todos los repositorios dentro de ese ámbito. Elija dónde configurar Autofix según los repositorios a los que quiera aplicar la configuración:

Scope Dónde configurar Autofix
Organización Seleccione Configuración de la organización>Repositorios para habilitar Autofix en todos los repositorios de la organización.
Proyecto Seleccione Configuración del proyecto>Repositorios>Todos los repositorios para habilitar la corrección automática para todos los repositorios del proyecto.
Repositorio Seleccione Configuración del proyecto>Repositorios y, a continuación, seleccione un repositorio para habilitar Autofix solo para ese repositorio.

Para activar la Autocorrección de Copilot:

  1. Inicie sesión en su organización de Azure DevOps https://dev.azure.com/{yourorganization}).
  2. Vaya a la página de configuración del ámbito de organización, proyecto o repositorio que desea configurar.
  3. En la sección Advanced Security, busque Autofix for security alerts. Si usa Code Security independiente, seleccione Opciones para abrir el panel Características de Code Security.
  4. Seleccione Corrección automática para las alertas de seguridad. La misma configuración habilita Copilot Autofix para las alertas admitidas de análisis de código y análisis de dependencias.
  5. Si usa el panel Características de seguridad de código , seleccione Aplicar para guardar los cambios.

Para ver capturas de pantalla de la configuración de Advanced Security incluido y de Code Security independiente, consulte Configurar Copilot Autofix.

La habilitación de Autofix no configura el análisis ni genera correcciones automáticamente. En primer lugar, configure el análisis de código o el análisis de dependencias. A continuación, solicite una corrección desde una alerta admitida.

Genera una solución para una alerta

Después de habilitar Copilot Autofix, siga los mismos pasos para una alerta de análisis de código compatible o una alerta de vulnerabilidad de dependencia.

  1. Seleccione Repos> Seguridad avanzada.
  2. Abra la lista de alertas de análisis de código o análisis de dependencias y, a continuación, seleccione una alerta para abrir su vista de detalles.
  3. Revise el hallazgo, el código afectado o la dependencia y las instrucciones de corrección.
  4. Seleccione Generar corrección.

Los ejemplos de análisis de código siguientes muestran el flujo de trabajo compartido. En un ejemplo de análisis de dependencias se muestra una pull request generada más adelante en esta sección.

Captura de pantalla de una vista de detalles de alerta de análisis de código con el botón Generar corrección en la esquina superior derecha.

Mientras Copilot Autofix trabaja en la corrección, la vista de detalles de la alerta muestra que la corrección está en curso. Copilot Autofix abre una pull request cuando la solución está lista.

Captura de pantalla de la vista detallada de una alerta de análisis de código que muestra a Copilot Autofix preparando una corrección antes de abrir un pull request.

Copilot Autofix genera la corrección y abre una solicitud de incorporación de cambios de una rama denominada copilot-autofix/.... La solicitud de incorporación de cambios lleva la etiqueta Copilot Autofix, que puede usar para identificar las solicitudes de incorporación de cambios de Copilot Autofix en la lista de solicitudes de incorporación de cambios.

Solo se puede activar una corrección para la misma alerta y rama. Mientras una solicitud está pendiente o su pipeline se está ejecutando, Generar corrección no está disponible. Si se envía otra solicitud al mismo tiempo, la alerta muestra que ya se genera una corrección. Puede generar otra corrección después de que la solicitud activa se realice correctamente o se produzca un error.

En el caso de las alertas de CodeQL, la solicitud de incorporación de cambios aparece automáticamente en Solicitudes de incorporación de cambios relacionadas en la vista de detalles de la alerta y continúa actualizando a medida que avanza la generación y finalización, por lo que no es necesario actualizar la página.

Captura de pantalla de la vista detallada de una alerta de análisis de código que muestra una solicitud de extracción activa de Autofix en solicitudes de extracción relacionadas.

En el siguiente ejemplo de examen de dependencias se muestra una solicitud de incorporación de cambios de Autofix activa para un paquete vulnerable en Solicitudes de incorporación de cambios relacionadas.

Captura de pantalla de una alerta de análisis de dependencias que muestra un pull request activo de Autofix para una vulnerabilidad de urllib3 en Pull requests relacionados.

Si Copilot Autofix no genera ningún cambio de código para la alerta, no crea una rama ni una solicitud de extracción, ni incluye un enlace a una solicitud de extracción en la vista de detalles de la alerta. En este caso, corrija la alerta manualmente. Para obtener más información, consulte Corrección no está disponible.

Revisar y fusionar la corrección

La solicitud de incorporación de cambios que abre Copilot Autofix funciona como cualquier otra solicitud de incorporación de cambios de Azure Repos. Su descripción resume la alerta que corrige la solución.

Captura de pantalla de una solicitud de incorporación de cambios creada por Copilot Autofix, mostrando el identificador de alerta, la gravedad y los detalles de corrección en la descripción.

La etiqueta Copilot Autofix identifica las solicitudes de extracción de corrección automática.

  1. Abra la solicitud de extracción desde la sección Solicitudes de extracción relacionadas de la alerta, o desde Repos>Solicitudes de extracción.
  2. Revise el cambio propuesto en la pestaña Archivos en todos los archivos afectados.
  3. Edite el cambio si necesita coincidir con el estilo de código, las convenciones de nomenclatura o los requisitos del proyecto.
  4. Apruebe y complete la solicitud de incorporación de cambios a través del flujo de trabajo de revisión normal.

Después de combinar la pull request, ejecute el analizador correspondiente en la rama objetivo combinada. Copilot Autofix no ejecuta este examen posterior a la combinación.

Alerta que ha corregido Qué ejecutar después de fusionar
Análisis de código Ejecute CodeQL o el analizador de terceros que notificó la alerta y publique los resultados de análisis actualizados en Advanced Security.
Vulnerabilidad de dependencia Ejecute el examen de dependencias para que Advanced Security pueda procesar las dependencias actualizadas.

La combinación de una pull request por sí sola no cierra la alerta. Advanced Security actualiza el estado de la alerta después de procesar los nuevos resultados del examen. Compruebe que esos resultados ya no notifican la vulnerabilidad.

Tip

Una corrección generada es un punto de partida, no una respuesta final. Trate la solicitud de incorporación de cambios como cualquier otro cambio: revísela, pruébela y solicite revisores adicionales según sea necesario antes de realizar la fusión.

Solución de problemas de Copilot Autofix

Corrección en curso

La mayoría de las ejecuciones de Copilot Autofix se completan en aproximadamente 2-5 minutos. El tiempo de ejecución puede variar en función de la capacidad disponible de la pipeline y de la complejidad del cambio. Si todos los trabajos paralelos están en uso, la canalización permanece en cola y la alerta continúa mostrando Corrección en curso hasta que la capacidad esté disponible.

Una solicitud que permanece pendiente antes de que se ponga en cola una canalización falla después de 30 minutos. Una canalización en cola o en ejecución tiene un tiempo de espera de dos horas. Es posible que la alerta deje de actualizarse automáticamente antes de que se alcance el tiempo de espera del back-end. Si la alerta permanece en curso:

  1. Actualice la página de detalles de la alerta.
  2. Si La ejecución de View está disponible, abra la ejecución de la canalización y compruebe si está en cola o en ejecución.
  3. Espere a que la solicitud alcance un estado de éxito o de error. No envíe otra solicitud mientras la solicitud existente esté activa.
  4. Si se produce un error en la solicitud, revise el mensaje de error y seleccione Reintentar corrección después de solucionar la causa.

Pull request creada pero no vinculada a la alerta

La solicitud de incorporación de cambios se puede crear correctamente antes de que aparezca en Solicitudes de incorporación de cambios relacionadas. Actualice la página de detalles de la alerta. Si la solicitud de extracción todavía no está vinculada, seleccione Repos>Solicitudes de incorporación de cambios y busque:

  • La etiqueta Autocorrección de Copilot.
  • Rama de origen que comienza por copilot-autofix/.
  • Título o descripción de la solicitud de incorporación de cambios que hace referencia a la alerta.

Revise y combine la solicitud de incorporación de cambios a través del flujo de trabajo normal de solicitud de incorporación de cambios, incluso si el vínculo no aparece en la alerta.

Las operaciones de repositorio o de solicitud de incorporación de cambios fallan

Copilot Autofix realiza un clon superficial de la rama asociada a la alerta. No inicializa submódulos de Git. Crea una rama con copilot-autofix/... nombre único, inserta el cambio generado y abre una solicitud de incorporación de cambios que tiene como destino la rama de alerta.

Utiliza View run desde el estado de fallo de la alerta para inspeccionar los registros de la canalización. En la tabla siguiente se enumeran las causas y acciones comunes:

Failure Elementos que se deben comprobar
No se puede clonar el repositorio o la rama. Compruebe que el repositorio y la rama de alerta siguen existiendo. Para que se encuentre una alerta en una solicitud de incorporación de cambios, la rama de origen y la solicitud de incorporación de cambios deben seguir activas. Si se eliminó la rama, ejecute el analizador pertinente en la rama actual y genere una corrección a partir de la alerta resultante.
La corrección depende del código de un submódulo de Git. Copilot Autofix no inicializa submódulos. Corrija la alerta manualmente si el contexto de código necesario se almacena en un submódulo.
Se eliminó la rama predeterminada o se eliminó la rama de alerta. Copilot Autofix se dirige a la rama asociada a la alerta, que no es necesariamente la rama predeterminada actual. Ejecute el analizador pertinente en la rama prevista y genere una corrección a partir de la alerta de esa rama.
No se puede crear una rama de corrección Compruebe las restricciones de nombre de rama del repositorio y los permisos de denegación explícitos para la GitHub Copilot ({organization}) identidad. Permitir ramas con el prefijo copilot-autofix/. Un reintento crea una nueva rama con nombre único.
Una directiva de rama bloquea el cambio Las políticas de finalización de las solicitudes de extracción se aplican a la solicitud de extracción de Autofix igual que a cualquier otra solicitud de extracción. Cumpla con los revisores obligatorios y las políticas de validación antes de completarlo. Si una política del repositorio bloquea el primer push, actualice la política para permitir la identidad de Autofix y el prefijo de rama.
No se puede hacer push del commit generado. Compruebe los permisos Contribuir y Crear rama para la identidad GitHub Copilot ({organization}), incluidas las denegaciones explícitas. Compruebe también la validación del correo electrónico del autor de confirmación tal como se describe en Se generó una corrección, pero no se pudo confirmar ni insertar.
No se puede crear la solicitud de incorporación de cambios. Compruebe el permiso Contribuir a las pull requests y el permiso para crear la etiqueta Copilot Autofix para la identidad GitHub Copilot ({organization}).

Se generó una corrección, pero no se pudo confirmar ni insertar

Copilot Autofix usa noreply@dev.azure.com como correo electrónico del autor de confirmación. Si una directiva de validación de correo electrónico del autor de confirmación no permite esta dirección, Copilot Autofix puede generar el cambio de código, pero no puede confirmarlo ni insertarlo para crear la solicitud de incorporación de cambios.

La vista detallada de la alerta muestra un error en el que se identifica la dirección de correo electrónico bloqueada del autor del commit.

Captura de pantalla de una alerta de análisis de código que muestra que Copilot Autofix no pudo confirmar una corrección generada porque no se permite el correo electrónico del autor de confirmación.

Añadir noreply@dev.azure.com a los patrones de correo electrónico permitidos en la directiva de validación del correo electrónico del autor de la confirmación:

  1. Seleccione Configuración del proyecto>Repositorios.
  2. Seleccione Todos los repositorios para actualizar la directiva de nivel de proyecto o seleccione el repositorio que tiene la directiva.
  3. Seleccione Directivas.
  4. En Directivas de repositorio, busque Confirmar validación de correo electrónico del autor.
  5. Agregue noreply@dev.azure.com a los patrones de correo electrónico permitidos.
  6. Vuelva a la alerta y seleccione Reintentar la corrección.

Captura de pantalla de la configuración de la directiva del repositorio donde se agrega el correo electrónico de Copilot Autofix a los patrones permitidos de correo electrónico del autor de la confirmación.

Se produce un error en una ejecución

Si una ejecución de Copilot Autofix no se puede completar, la alerta muestra un estado de error visible para que puedas ver rápidamente que la ejecución no se completó correctamente. Desde el estado de error, puede reintentar la ejecución para generar una nueva corrección.

Captura de pantalla de una alerta de análisis de código en la que se muestra una ejecución de autofijo de Copilot en estado de error con la opción de reintentar la ejecución.

Una ejecución puede producir un error por motivos transitorios o cuando la ejecución no genera un cambio de código utilizable. Vuelva a intentar la ejecución para volver a generar la corrección.

Una alerta sigue abierta después de fusionar la corrección

Combinar una solicitud de incorporación de cambios de Autofix no cierra la alerta por sí sola. Advanced Security necesita nuevos resultados del analizador que notificó el hallazgo. Si la alerta permanece abierta:

  1. Compruebe que la solicitud de extracción se fusionó en la misma rama donde se detectó la alerta.
  2. Confirme que el examen de código o de dependencias, según corresponda, se ejecutó después de la combinación y analizó la confirmación combinada.
  3. Confirme que Advanced Security procesó los resultados actualizados para el repositorio y la rama correctos.
  4. Revise los nuevos resultados para comprobar que la vulnerabilidad ya no se detecta.
  5. Si la vulnerabilidad sigue presente, actualice la corrección y vuelva a ejecutar el analizador correspondiente.

La corrección no está disponible

Copilot Autofix no puede generar una corrección para cada alerta. Es posible que una corrección no esté disponible cuando:

  • Actualmente, Copilot Autofix no admite este tipo de alerta.
  • Copilot determina que la alerta podría ser un falso positivo.
  • Copilot Autofix se ejecuta, pero no produce ningún cambio en el código. En este caso, no se crea ninguna rama ni ninguna pull request.

Si Copilot Autofix determina que la alerta podría ser un falso positivo y no produce ningún cambio, la vista de detalles de alerta muestra el resultado. Puede revisar la ejecución o volver a intentar la corrección.

Captura de pantalla de la vista de detalles de la alerta de análisis de código que muestra que Copilot determinó que la alerta podría ser un falso positivo y no proporcionó ninguna corrección, con opciones para ver la ejecución o reintentar la corrección.

Cuando una corrección no esté disponible, use la guía de corrección de la alerta para corregirla manualmente. Descarte una alerta solo después de revisar el hallazgo y determinar el motivo de descarte adecuado. Para obtener más información, consulte Detalles de alertas de análisis de código y Detalles de alertas de análisis de dependencias.