Skip to main content

Command Palette

Search for a command to run...

Agentes en la nube

Bugbot

Bugbot revisa pull requests e identifica errores, vulnerabilidades de seguridad y problemas de calidad del código.

Configura Bugbot en Automatizaciones.

Cómo funciona

Bugbot analiza los diffs de las PR y deja comentarios con explicaciones y sugerencias de solución. Se ejecuta automáticamente con cada actualización de una PR o manualmente cuando se activa.

  • Ejecuta revisiones automáticas con cada actualización de una PR
  • Activación manual al comentar cursor review o bugbot run en cualquier PR
  • Usa los comentarios existentes de la PR como contexto: lee los comentarios vinculados a la PR (generales y en línea) para evitar sugerencias duplicadas y aprovechar los comentarios anteriores
  • Los enlaces Fix in Cursor abren los problemas directamente en Cursor
  • Los enlaces Fix in Web abren los problemas directamente en cursor.com/agents

Configuración

Conecta tus repositorios a través del panel de control de Cursor para empezar a usar Bugbot.

Después de conectarlos, abre Bugbot en Automatizaciones para activarlo en repositorios específicos.

Estados de las comprobaciones de CI

Bugbot publica un estado por cada ejecución de revisión. En GitHub, aparece como una comprobación llamada Cursor Bugbot. En Bitbucket, aparece como un estado de build con la clave cursor-bugbot. En Azure DevOps, aparece como un estado con el contexto cursor-bugbot/review. El estado usa estas conclusiones:

  • success: Bugbot no encontró problemas y no hay comentarios de Bugbot sin resolver de ejecuciones anteriores.
  • neutral: Bugbot encontró problemas, la ejecución fue cancelada por un commit más reciente o Bugbot tuvo un error interno. Esta es la conclusión predeterminada cuando Bugbot informa hallazgos.
  • failure: Bugbot encontró problemas y la comprobación está configurada para fallar si hay problemas sin resolver.

Si usas protección de ramas, exige la comprobación o el estado de build de Bugbot para asegurarte de que Bugbot se ejecute antes de fusionar. Exigir solo el estado no bloquea las fusiones por hallazgos, ya que estos tienen neutral de forma predeterminada. Si el comportamiento de fallo por problemas sin resolver está disponible para tu organización, actívalo para que los hallazgos sin resolver generen un estado de error. Bugbot no emite una conclusión skipped.

Cuando Bugbot Autofix está activado, GitHub también puede mostrar una comprobación independiente de Cursor Bugbot Autofix. Esa comprobación solo usa success o neutral.

Configuración

Analítica

Abre Bugbot en Automatizaciones para consultar la actividad y los resultados de las revisiones.

API

Los equipos Enterprise pueden usar la API de Bugbot para iniciar revisiones y consultar analítica por revisión. Cree una clave de API en Cursor Panel de control → API Keys y autentíquese con Basic Authentication.

Iniciar una revisión

POST/bugbot/review

Ponga en cola una revisión de Bugbot para una pull request o merge request. La solicitud devuelve una respuesta cuando la revisión queda en cola; la revisión se ejecuta de forma asíncrona.

Requiere una clave de API con el ámbito admin:*. El endpoint está limitado a 30 solicitudes por minuto y por equipo.

Establezca dryRun en true para ejecutar todo el flujo de análisis sin publicar comentarios de revisión, comentarios inline, comprobaciones ni otros efectos secundarios en el proveedor de SCM. Las revisiones dry run siguen guardando los hallazgos y se facturan como las revisiones normales. Consúltelas con GET /analytics/team/bugbot-reviews. Las solicitudes dry run tienen un límite adicional de 10 solicitudes por minuto y por equipo.

Cuerpo de la solicitud

prUrl cadena (obligatorio)

URL completa de una pull request de GitHub o una merge request de GitLab.

dryRun booleano (opcional)

Cuando es true, ejecuta el análisis y guarda los hallazgos sin publicar nada en el proveedor de SCM. Valor predeterminado: false.
curl --request POST \  --url https://api.cursor.com/bugbot/review \  -u YOUR_API_KEY: \  --header 'Content-Type: application/json' \  --data '{    "prUrl": "https://github.com/your-org/your-repo/pull/42"  }'
curl --request POST \  --url https://api.cursor.com/bugbot/review \  -u YOUR_API_KEY: \  --header 'Content-Type: application/json' \  --data '{    "prUrl": "https://github.com/your-org/your-repo/pull/42",    "dryRun": true  }'

Respuesta:

{  "outcome": "success",  "message": "Bugbot review queued",  "request_id": "6e0d261c-86a2-4383-89f0-9162c1c10662",  "dry_run": false}

Una respuesta de dry run usa "message": "Bugbot dry-run review queued" y "dry_run": true.

Guarde request_id para identificar la revisión completada en el endpoint de analítica.

Si Bugbot no puede revisar la pull request, el endpoint devuelve 400 Bad Request con el motivo:

{  "outcome": "error",  "message": "Bugbot is disabled for this repository"}

Analítica de revisiones

GET/analytics/team/bugbot-reviews

Devuelve un elemento por cada revisión de Bugbot completada, incluido el commit revisado, el número de hallazgos, el coste facturado y los datos de resolución de cada hallazgo.

Incluye revisiones publicadas y revisiones dry run. Los hallazgos publicados se identifican mediante comment_id y resolution_status. En cambio, los hallazgos de dry run devuelven title, description y locations, ya que no se publica nada en el SCM.

Requiere una clave de API con el alcance read:*.

Parámetros de consulta

startDate cadena (opcional)

Inicio del intervalo de analítica. El valor predeterminado es hace 7 días. Consulta Formato de fecha.

endDate cadena (opcional)

Fin del intervalo de analítica. El valor predeterminado es now. Consulta Formato de fecha.

repo cadena (opcional)

Filtro de repositorio con el formato host/owner/repo. El protocolo y el sufijo .git son opcionales.

prNumber número (opcional)

Número de pull request o merge request.

page número (opcional)

Número de página para la paginación. Valor predeterminado: 1.

pageSize número (opcional)

Número de revisiones por página. Valor predeterminado: 100, máximo: 250.

dryRun booleano (opcional)

Filtra para mostrar solo revisiones dry run (true) o publicadas (false).
curl --get https://api.cursor.com/analytics/team/bugbot-reviews \  -u YOUR_API_KEY: \  --data-urlencode 'startDate=2026-06-01' \  --data-urlencode 'endDate=2026-06-29' \  --data-urlencode 'repo=github.com/your-org/your-repo' \  --data-urlencode 'prNumber=42' \  --data-urlencode 'page=1' \  --data-urlencode 'pageSize=100'
curl --get https://api.cursor.com/analytics/team/bugbot-reviews \  -u YOUR_API_KEY: \  --data-urlencode 'dryRun=true' \  --data-urlencode 'repo=github.com/your-org/your-repo' \  --data-urlencode 'prNumber=42'

Respuesta (revisión publicada):

{  "data": [    {      "request_id": "6e0d261c-86a2-4383-89f0-9162c1c10662",      "timestamp": "2026-06-29T19:42:18.000Z",      "repo": "github.com/your-org/your-repo",      "repo_node_id": "R_kgDOABCDEF",      "pr_number": 42,      "commit_sha": "9f3c2a1b7d8e4f5061728394a5b6c7d8e9f0a1b2",      "bugs_found": 2,      "cost_cents": 42.5,      "dry_run": false,      "publication_status": "posted",      "bugs": [        {          "comment_id": "2147483999",          "resolution_status": "resolved",          "severity": "high"        },        {          "comment_id": "2147484000",          "resolution_status": "unresolved",          "severity": "medium"        }      ]    }  ],  "pagination": {    "page": 1,    "pageSize": 100,    "totalItems": 1,    "totalPages": 1,    "hasNextPage": false,    "hasPreviousPage": false  },  "params": {    "metric": "bugbot-reviews",    "teamId": 12345,    "startDate": "2026-06-01",    "endDate": "2026-06-29",    "repo": "github.com/your-org/your-repo",    "prNumber": 42,    "page": 1,    "pageSize": 100  }}

Respuesta (revisión en modo dry-run):