4.0 KiB
Notas para Claude Code en este repositorio
Bloqueo conocido: push de GitHub en sesiones remotas (Claude Code on the web)
En las sesiones remotas de Claude Code sobre ares-core/mirofish, la integración de
GitHub de esta cuenta puede no tener ningún permiso de escritura de referencias
sobre el repo, incluso cuando las instrucciones de la sesión piden desarrollar y
pushear a una rama designada. Esto se manifiesta como 403 Resource not accessible by integration en todas estas vías, de forma consistente y repetible:
git pushdirecto (vía el proxy git local de la sesión)mcp__github__fork_repositorymcp__github__create_repositorymcp__github__create_branchmcp__github__push_files(que internamente intenta crear la rama si no existe)
No es un problema de red transitorio ni de firma de commit (autor/email) — reintentar
el mismo comando produce el mismo 403. No hay forma de rodear esto desde la sesión:
ninguna combinación de herramientas de git/GitHub disponibles tiene permiso de
git/refs sobre este repo cuando ocurre.
Procedimiento a seguir si esto vuelve a pasar
- No insistir indefinidamente. Confirmar el bloqueo con 1-2 reintentos (incluyendo
al menos una vía distinta, p. ej.
git pushymcp__github__create_branch), y si ambas fallan igual, asumir que es el mismo bloqueo de permisos de la integración. - No hacer commits/push a
mainni a otra rama como workaround — eso violaría las instrucciones de alcance del repo. - Nunca perder el trabajo. Dejar todo commiteado localmente en la rama designada,
con autor
Claude <noreply@anthropic.com>(usargit config user.email noreply@anthropic.com && git config user.name Claudeantes de commitear, para que el commit salga verificado si el hook de la sesión lo pide). - Generar un parche aplicable con
git format-patch <rama-base> -o <scratchpad>/y entregarlo conSendUserFilepara que el usuario pueda aplicarlo (git am 0001-*.patch) en cuanto tenga un entorno con permisos de escritura, o pueda revisar/ajustar los permisos de la integración de GitHub conectada a la sesión. - Explicar el bloqueo al usuario en términos concretos (qué herramientas fallaron, con qué error) en vez de reportar el trabajo como "publicado" o "hecho" sin más.
- Si el usuario confirma que corrigió los permisos, reintentar
git push(ocreate_branch+push_files) antes de volver a generar un parche.
Actualización: workaround con un Personal Access Token del usuario
Si el usuario ofrece pegar/entregar un GitHub Personal Access Token (classic, con
scope repo) para que la sesión "tome su rol":
- Sí funciona hacer
git pushdirecto ahttps://<token>@github.com/<owner>/<repo>.git(protocolo git smart-HTTP contragithub.com), añadiendo un remote temporal, empujando, y luegogit remote remove <ese-remote>inmediatamente para no dejar el token en texto plano en.git/configmás tiempo del necesario. - NO funciona usar ese mismo token contra
api.github.com(ni víacurldirecto ni vía las toolsmcp__github__*, que internamente pegan aapi.github.com): el proxy de salida de la sesión intercepta las llamadas aapi.github.compara esta org y devuelve{"message":"GitHub access is not enabled for this session. An org admin must connect the Claude GitHub App for this organization."}— es un bloqueo de infraestructura del lado de Anthropic/el proxy, no de permisos de GitHub, y un PAT válido no lo evita. - Consecuencia práctica: con un PAT del usuario se puede publicar la rama (
git push), pero no se puede crear el Pull Request por API. Hay que darle al usuario el link directo que devuelvegit pushen su salida (https://github.com/<owner>/<repo>/pull/new/<rama>) para que abra el PR manualmente, o esperar a que conecten la GitHub App de Claude a la org. - Seguridad: avisar siempre al usuario que rote/revoque el token después de usarlo, ya que quedó expuesto en el texto de la conversación.