Skip to main content

Creating a personal access token

You can create a personal access token to use in place of a password with the command line or with the API.

Warning: Treat your access tokens like passwords.

To access GitHub from the command line, consider using GitHub CLI or Git Credential Manager instead of creating a personal access token.

When using a personal access token in a script, consider storing your token as a secret and running your script through GitHub Actions. For more information, see "Encrypted secrets." You can also store your token as a Codespaces secret and run your script in Codespaces. For more information, see "Managing encrypted secrets for your codespaces."

If these options are not possible, consider using another service such as the 1Password CLI to store your token securely.

About personal access tokens

Personal access token are an alternative to using passwords for authentication to GitHub Enterprise Cloud when using the GitHub API or the command line. Personal access tokens are intended to access GitHub resources on behalf of yourself. To access resources on behalf of an organization, or for long-lived integrations, you should use a GitHub App. For more information, see "About apps."

GitHub currently supports two types of personal access tokens: fine-grained personal access tokens and personal access tokens (classic). GitHub recommends that you use fine-grained personal access tokens instead of personal access tokens (classic) whenever possible. Fine-grained personal access tokens have several security advantages over personal access tokens (classic):

  • Each token can only access resources owned by a single user or organization.
  • Each token can only access specific repositories.
  • Each token is granted specific permissions, which offer more control than the scopes granted to personal access tokens (classic).
  • Each token must have an expiration date.
  • Organization owners can require approval for any fine-grained personal access tokens that can access resources in the organization.
  • Enterprise owners can require approval for any fine-grained personal access tokens that can access resources in organizations owned by the enterprise.

Additionally, organization owners can restrict the access of personal access token (classic) to their organization, and enterprise owners can restrict the access of personal access token (classic) to the enterprise or organizations owned by the enterprise.

Nota: Actualmente, algunas características solo funcionan con personal access tokens (classic):

  • Solo los personal access tokens (classic) tienen acceso de escritura para los repositorios públicos que no son propiedad tuya o de una organización de la que no eres miembro.
  • Solo los personal access tokens (classic) tienen acceso de escritura automáticamente para los repositorios internos que son propiedad de la empresa. Es necesario conceder acceso a los Fine-grained personal access token a los repositorios internos.
  • Los colaboradores externos solo pueden usar personal access tokens (classic) para acceder a los repositorios de la organización en los que son colaboradores.
  • Solo los personal access tokens (classic) pueden acceder a empresas. (Los Fine-grained personal access token puede acceder a organizaciones que son propiedad de empresas).
  • Las siguientes API solo admiten personal access tokens (classic). Para obtener una lista de las operaciones de la API REST que se admiten para fine-grained personal access token, consulta "Puntos de conexión disponibles para fine-grained personal access token".
    • GraphQL API
    • API REST para administradores de empresa
    • API REST para la administración de importaciones de origen
    • API REST para la administración de Projects (classic)
    • API REST para la administración de GitHub Packages
    • API REST para la administración de notificaciones
    • API REST para la transferencia de un repositorio
    • API REST para la creación de un repositorio a partir de una plantilla
    • API REST para la creación de un repositorio para un usuario autenticado

As a security precaution, GitHub automatically removes personal access tokens that haven't been used in a year. To provide additional security, we highly recommend adding an expiration to your personal access tokens.

Creating a fine-grained personal access token

Note: Los Fine-grained personal access token están actualmente en versión beta y están sujetos a cambios. Para dejar comentarios, consulta el debate sobre los comentarios.

  1. Verify your email address, if it hasn't been verified yet.

  2. En la esquina superior derecha de cualquier página, haga clic en la foto del perfil y, luego, en Settings (Configuración).

    Icono Settings (Parámetros) en la barra de usuario

  3. In the left sidebar, click Developer settings.

  4. In the left sidebar, under Personal access tokens, click Fine-grained tokens.

  5. Click Generate new token.

  6. Optionally, under Token name, enter a name for the token.

  7. Under Expiration, select an expiration for the token.

  8. Optionally, under Description, add a note to describe the purpose of the token.

  9. Under Resource owner, select a resource owner. The token will only be able to access resources owned by the selected resource owner. Organizations that you are a member of will not appear unless the organization opted in to fine-grained personal access tokens. For more information, see "Setting a personal access token policy for your organization." You may be required to perform SAML single sign-on (SSO) if the selected organization requires it and you do not already have an active SAML session.

  10. Optionally, if the resource owner is an organization that requires approval for fine-grained personal access tokens, below the resource owner, in the box, enter a justification for the request.

  11. Under Repository access, select which repositories you want the token to access. You should choose the minimal repository access that meets your needs. Tokens always include read-only access to all public repositories on GitHub.

  12. If you selected Only select repositories in the previous step, under the Selected repositories dropdown, select the repositories that you want the token to access.

  13. Under Permissions, select which permissions to grant the token. Depending on which resource owner and which repository access you specified, there are repository, organization, and account permissions. You should choose the minimal permissions necessary for your needs. For more information about what permissions are required for each REST API operation, see "Permissions required for fine-grained personal access tokens."

  14. Click Generate token.

If you selected an organization as the resource owner and the organization requires approval for fine-grained personal access tokens, then your token will be marked as pending until it is reviewed by an organization administrator. Your token will only be able to read public resources until it is approved. If you are an owner of the organization, your request is automatically approved. For more information, see "Reviewing and revoking personal access tokens in your organization".

Creating a personal access token (classic)

Note: Organization owners can restrict the access of personal access token (classic) to their organization. If you try to use a personal access token (classic) to access resources in an organization that has disabled personal access token (classic) access, your request will fail with a 403 response. Instead, you must use a GitHub App, OAuth App, or fine-grained personal access token.

Note: Your personal access token (classic) can access every repository that you can access. GitHub recommends that you use fine-grained personal access tokens instead, which you can restrict to specific repositories. Fine-grained personal access tokens also enable you to specify fine-grained permissions instead of broad scopes.

  1. Verify your email address, if it hasn't been verified yet.

  2. En la esquina superior derecha de cualquier página, haga clic en la foto del perfil y, luego, en Settings (Configuración).

    Icono Settings (Parámetros) en la barra de usuario

  3. In the left sidebar, click Developer settings.

  4. In the left sidebar, under Personal access tokens, click Tokens (classic).

  5. Select Generate new token, then click Generate new token (classic).

  6. Give your token a descriptive name. Token description field

  7. To give your token an expiration, select the Expiration drop-down menu, then click a default or use the calendar picker. Token expiration field

  8. Select the scopes you'd like to grant this token. To use your token to access repositories from the command line, select repo. A token with no assigned scopes can only access public information. For more information, see "Available scopes".

    Selecting token scopes

  9. Click Generate token. Generate token button

    Newly created token

  10. To use your token to access resources owned by an organization that uses SAML single sign-on, authorize the token. For more information, see "Authorizing a personal access token for use with SAML single sign-on."

Using a token on the command line

Una vez que tengas un token, puedes ingresarlo en lugar de tu contraseña cuando realices operaciones de Git a través de HTTPS.

Por ejemplo, en la línea de comando ingresarás lo siguiente:

$ git clone https://github.com/username/repo.git
Username: your_username
Password: your_token

Personal access tokens can only be used for HTTPS Git operations. If your repository uses an SSH remote URL, you will need to switch the remote from SSH to HTTPS.

If you are not prompted for your username and password, your credentials may be cached on your computer. You can update your credentials in the Keychain to replace your old password with the token.

Instead of manually entering your personal access token for every HTTPS Git operation, you can cache your personal access token with a Git client. Git will temporarily store your credentials in memory until an expiry interval has passed. You can also store the token in a plain text file that Git can read before every request. For more information, see "Caching your GitHub credentials in Git."

Further reading