Branch protection para coding agents: no force-push a main, no bypass
Una branch protection rule bloquea force push y delete por default, y puede exigir status checks y PRs. Un solo rule aplica a la vez (fnmatch). Los admins pueden bypassear salvo que la regla los incluya. El agente no desactiva reglas ni mergea a main. Docs GitHub About protected branches.
Por Marco Lee · Reportar un error
Continúa con un curso prácticomain protegida no es un estilo: es una regla. GitHub: collaborators no pueden pushear/force-push/borrar la rama si la protection lo dice, y un PR puede exigir status checks verdes o historial linear. Default de una rule: sin force push, sin delete.
Un agente que hace git push --force origin main o gh api para bajar la protection es un incidente. Este loop: nunca merge. Entrega un PR (gh pr).
Qué exige la rule (típico)
- PR obligatorio antes de merge.
- N reviews.
- Status checks concretos (nombres de job únicos entre workflows: la doc avisa que el mismo job name en dos workflows ambigua el check y bloquea el merge).
- Conversation resolution.
- Linear history (rebase/squash only).
- Incluir admins (opcional; si no, un admin agent con PAT bypassea).
Pattern fnmatch: *release*. Solo una branch protection rule aplica a la vez; si hay varias, es difícil saber cuál. Rulesets no tienen esa restricción. El agente no “arregla” creando una segunda rule.
Bypass lists: solo en repos de organización. No te agregues.

Receta AGENTS.md
Never push or force-push protected branches (main).
Never edit branch protection via API unless the ticket is that.
If CI is red, fix the job; do not rename jobs to dodge required checks.
Job names unique across workflows.
Deliver a PR URL, not a merge.
Si el check requerido se llama test y tienes dos workflows con test, GitHub no sabe cuál. Renombrar a test-unit / test-e2e es el fix, no quitar el required check.
FAQ
¿Auto-merge? GitHub puede mergear cuando todo está verde. El agente no lo activa en un repo ajeno.
¿Rulesets vs protection? Rulesets son el modelo nuevo; pueden apilarse. No conviertas protection a rulesets de paso.
¿Admin PAT? Sigue sin force-push a main en este flujo. “Puedo” ≠ “debo”.
¿Borrar la rama del agente? Las de feature no están protegidas. main sí.
El curso instalar un agente no cubre protection. Sandboxing no bloquea git push.

Verificado 2026-09-03 contra GitHub Docs — About protected branches (defaults, unique job names, one rule at a time).
Si gh pr merge falla porque main está checked out en otro worktree, no uses gh api merge como atajo para saltarte checks. El merge API aún puede respetar protection; si no, peor. Reporta el bloqueo.
De la guía a la práctica
Ruta Pi.dev: instala tu agente de coding
Lleva tus convenciones de trabajo a Pi.dev: instalación, instrucciones, sesiones y operación segura.
Ver el curso gratisContenido gratis, sin registro. Los servicios externos pueden tener costos.
Avisos cuando actualicemos cursos y guías
Recibe actualizaciones por correo. Es opcional: puedes seguir leyendo y abrir cualquier curso sin suscribirte.
Lecturas relacionadas
Sigue explorando Coding Agents y otras piezas para builders.

GitHub Copilot CLI: guía práctica del agente de IA en la terminal

Continue.dev: guía práctica del agente open source en VS Code

Goose: guía práctica del agente open source (CLI, Desktop y MCP)
