GitHub Personal Access Token (PAT) — autenticación segura en GitHub
Introducción
El GitHub Personal Access Token (PAT), o token de acceso personal, es una forma moderna de autenticación segura en la plataforma GitHub.
Desde agosto de 2021, GitHub dejó de soportar el uso de contraseñas para operaciones con Git a través de HTTPS. Esto significa que para cualquier acción que antes requería contraseña, ahora se necesita un token. PAT permite:
- conectarse de forma segura a los repositorios;
- trabajar con la API de GitHub;
- automatizar procesos en scripts, CI/CD y otras herramientas sin riesgo de comprometer la cuenta.
En resumen: PAT es una “clave” que da acceso limitado, se puede revocar fácilmente y puede tener fecha de expiración.
¿Por qué usar PAT?
El objetivo principal de PAT es asegurar el trabajo con GitHub sin perder comodidad.
Funciones clave:
- Seguridad
La contraseña da acceso completo a la cuenta. Si se compromete, todo está en riesgo. Un token puede limitarse por permisos y duración. - Automatización
Scripts, CI/CD, bots y otras herramientas pueden usar PAT en lugar de ingresar manualmente usuario y contraseña. - Control de acceso
Se pueden crear múltiples tokens con distintos permisos para diferentes tareas. Si un token se filtra, se puede revocar sin afectar a los demás.
Tipos de tokens
GitHub ofrece dos tipos de tokens:
- Classic (clásico)
- El acceso se define mediante scopes (por ejemplo,
repo,workflow). - Da permisos a todos los repositorios del usuario.
- Simple de usar, pero menos flexible.
- El acceso se define mediante scopes (por ejemplo,
- Fine-grained (detallado)
- Permite limitar el acceso a repositorios específicos.
- Se pueden asignar permisos precisos, por ejemplo, “solo lectura de issues”.
- Las organizaciones pueden requerir aprobación de estos tokens.
💡 Consejo: usa tokens fine-grained cuando la seguridad y la limitación de acceso son importantes; classic para compatibilidad con herramientas antiguas.
Cómo crear un PAT
Paso 1. Ir a configuración
- Abre GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic).
Paso 2. Generar un nuevo token
- Haz clic en Generate new token (classic).
- Asigna un nombre (Note), por ejemplo
CI-tokenoGit-PC. - Establece la fecha de expiración (Expiration) — se recomiendan 90 días o 1 año.
- Selecciona los permisos necesarios (Scopes) — mínimo para Git:
repo, para Actions:workflow. - Genera el token y guárdalo inmediatamente — solo se mostrará una vez.
Uso del PAT
1. Git vía HTTPS
git clone https://github.com/username/repo.git
# Username: tu usuario
# Password: token generado
Para no ingresar el token cada vez, se puede cachear:
git config --global credential.helper manager # Windows/Mac
git config --global credential.helper 'cache --timeout=3600' # Linux
2. Trabajo con la API de GitHub
$token = Get-Secret -Name GitHubToken # obtener token de forma segura
$headers = @{ Authorization = "token $token" }
$repos = Invoke-RestMethod -Uri "https://api.github.com/user/repos" -Headers $headers
$repos | ForEach-Object { $_.name }
Crear un issue:
$body = @{
title = "Nueva tarea de prueba"
body = "Descripción de la tarea"
} | ConvertTo-Json
Invoke-RestMethod -Uri "https://api.github.com/repos/username/repo/issues" `
-Method Post `
-Headers $headers `
-Body $body
3. CI/CD y scripts
$token = Get-Secret -Name GitHubToken
git config --global user.name "CI Bot"
git config --global user.email "ci@example.com"
git add .
git commit -m "Actualización automática"
git push "https://$token@github.com/username/repo.git" main
💡 Consejo: usa un token separado con permisos mínimos para CI/CD.
4. IDE y desarrollo local
- En Visual Studio Code y otras IDE se puede insertar el PAT en lugar de la contraseña para trabajar con repositorios privados y pull requests.
- Para distintas máquinas o IDE, crea tokens separados para limitar el impacto de una posible filtración.
5. Gestión y seguridad
- Guarda los tokens en gestores de contraseñas o SecretStore.
- Crea tokens separados para diferentes tareas.
- Revisa y revoca tokens no utilizados regularmente.
- Siempre establece fecha de expiración (no uses “No expiration”).
- Planifica la rotación de tokens para CI/CD y scripts automatizados.
6. Alternativa: GitHub CLI
gh auth login
El CLI abrirá el navegador, realizará la autenticación, creará y guardará el token localmente. Esto evita generar el PAT manualmente y facilita la gestión de claves.