--- title: "infisical login" description: "Login into Infisical from the CLI" --- ```bash infisical login ``` ### Description The CLI uses authentication to verify your identity. You can authenticate using: - **Browser Login** (default): Opens a browser for authentication - **Direct Login**: Provide email and password via flags or environment variables for non-interactive workflows - **Interactive CLI Login**: Use the `--interactive` flag to enter credentials via CLI prompts When authenticated, a token is generated and saved in your system Keyring to allow you to make future interactions with the CLI. To change where the login credentials are stored, visit the [vaults command](./vault). If you have added multiple users, you can switch between the users by using the [user command](./user). **JWT Token Output:** - For **user authentication** with the `--plain --silent` flags: outputs only the JWT access token (useful for scripting) - For **machine identity authentication**: an access token is always printed to the console Use the `--plain` flag to print only the token in plain text and the `--silent` flag to disable update alerts. Both flags are ideal for capturing the token in environment variables or CI/CD pipelines. ### Authentication Methods The Infisical CLI supports two main categories of authentication: User Authentication and Machine Identity Authentication. #### User Authentication User authentication is designed for individual developers and supports multiple login flows. The User authentication method allows you to log in with your email and password. This method supports three different login flows: - **Browser Login** (default): Opens a browser for authentication - **Direct Login**: Provide credentials via flags or environment variables for CI/CD - **Interactive CLI Login**: Enter credentials via CLI prompts using `--interactive` Your email address. Required for direct login along with `--password`. Your password. Required for direct login along with `--email`. Force interactive CLI login instead of browser-based authentication. Output only the JWT token (useful for scripting and CI/CD). ```bash infisical login ``` ```bash infisical login --email=user@example.com --password=your-password # Or using environment variables export INFISICAL_EMAIL="user@example.com" export INFISICAL_PASSWORD="your-password" infisical login ``` ```bash infisical login --interactive ``` ```bash export INFISICAL_TOKEN=$(infisical login --email=user@example.com --password=your-password --plain --silent) ``` #### Machine Identity Authentication Machine identity authentication methods are designed for automated systems, services, and CI/CD pipelines. The Universal Auth method is a simple and secure way to authenticate with Infisical. It requires a client ID and a client secret to authenticate with Infisical. Your machine identity client ID. Your machine identity client secret. To create a universal auth machine identity, follow the step by step guide outlined [here](/documentation/platform/identities/universal-auth). Run the `login` command with the following flags to obtain an access token: ```bash infisical login --method=universal-auth --client-id= --client-secret= ``` The Native Kubernetes method is used to authenticate with Infisical when running in a Kubernetes environment. It requires a service account token to authenticate with Infisical. Your machine identity ID. Path to the Kubernetes service account token to use. Default: `/var/run/secrets/kubernetes.io/serviceaccount/token`. To create a Kubernetes machine identity, follow the step by step guide outlined [here](/documentation/platform/identities/kubernetes-auth). Run the `login` command with the following flags to obtain an access token: ```bash # --service-account-token-path is optional, and will default to '/var/run/secrets/kubernetes.io/serviceaccount/token' if not provided. infisical login --method=kubernetes --machine-identity-id= --service-account-token-path= ``` The Native Azure method is used to authenticate with Infisical when running in an Azure environment. Your machine identity ID. To create an Azure machine identity, follow the step by step guide outlined [here](/documentation/platform/identities/azure-auth). Run the `login` command with the following flags to obtain an access token: ```bash infisical login --method=azure --machine-identity-id= ``` The Native GCP ID Token method is used to authenticate with Infisical when running in a GCP environment. Your machine identity ID. To create a GCP machine identity, follow the step by step guide outlined [here](/documentation/platform/identities/gcp-auth). Run the `login` command with the following flags to obtain an access token: ```bash infisical login --method=gcp-id-token --machine-identity-id= ``` The GCP IAM method is used to authenticate with Infisical with a GCP service account key. Your machine identity ID. Path to your GCP service account key file _(Must be in JSON format!)_ To create a GCP machine identity, follow the step by step guide outlined [here](/documentation/platform/identities/gcp-auth). Run the `login` command with the following flags to obtain an access token: ```bash infisical login --method=gcp-iam --machine-identity-id= --service-account-key-file-path= ``` The AWS IAM method is used to authenticate with Infisical with an AWS IAM role while running in an AWS environment like EC2, Lambda, etc. Your machine identity ID. To create an AWS machine identity, follow the step by step guide outlined [here](/documentation/platform/identities/aws-auth). Run the `login` command with the following flags to obtain an access token: ```bash infisical login --method=aws-iam --machine-identity-id= ``` The OIDC Auth method is used to authenticate with Infisical via identity tokens with OIDC. Your machine identity ID. The OIDC JWT from the identity provider. To create an OIDC machine identity, follow the step by step guide outlined [here](/documentation/platform/identities/oidc-auth/general). Run the `login` command with the following flags to obtain an access token: ```bash infisical login --method=oidc-auth --machine-identity-id= --jwt= ``` The JWT Auth method is used to authenticate with Infisical via a JWT token. The JWT token to use for authentication. Your machine identity ID. Run the `login` command with the following flags to obtain an access token: ```bash infisical login --method=jwt-auth --jwt= --machine-identity-id= ``` ### Flags The login command supports a number of flags that you can use for different authentication methods. Below is a list of all the flags that can be used with the login command. ```bash infisical login --method= # Optional, will default to 'user'. ``` #### Valid values for the `method` flag are: - `user`: Login using email and password. (default) - `universal-auth`: Login using a universal auth client ID and client secret. - `kubernetes`: Login using a Kubernetes native auth. - `azure`: Login using an Azure native auth. - `gcp-id-token`: Login using a GCP ID token native auth. - `gcp-iam`: Login using a GCP IAM. - `aws-iam`: Login using an AWS IAM native auth. - `oidc-auth`: Login using OIDC auth. - `jwt-auth`: Login using a plain JWT token. ```bash infisical login --client-id= # Optional, required if --method=universal-auth. ``` #### Description The client ID of the universal auth machine identity. This is required if the `--method` flag is set to `universal-auth`. The `client-id` flag can be substituted with the `INFISICAL_UNIVERSAL_AUTH_CLIENT_ID` environment variable. ```bash infisical login --client-secret= # Optional, required if --method=universal-auth. ``` #### Description The client secret of the universal auth machine identity. This is required if the `--method` flag is set to `universal-auth`. The `client-secret` flag can be substituted with the `INFISICAL_UNIVERSAL_AUTH_CLIENT_SECRET` environment variable. ```bash infisical login --machine-identity-id= # Optional, required if --method=kubernetes, azure, gcp-id-token, gcp-iam, or aws-iam. ``` #### Description The ID of the machine identity. This is required if the `--method` flag is set to `kubernetes`, `azure`, `gcp-id-token`, `gcp-iam`, or `aws-iam`. The `machine-identity-id` flag can be substituted with the `INFISICAL_MACHINE_IDENTITY_ID` environment variable. ```bash infisical login --service-account-token-path= # Optional Will default to '/var/run/secrets/kubernetes.io/serviceaccount/token'. ``` #### Description The path to the Kubernetes service account token to use for authentication. This is optional and will default to `/var/run/secrets/kubernetes.io/serviceaccount/token`. The `service-account-token-path` flag can be substituted with the `INFISICAL_KUBERNETES_SERVICE_ACCOUNT_TOKEN_PATH` environment variable. ```bash infisical login --service-account-key-file-path= # Optional, but required if --method=gcp-iam. ``` #### Description The path to your GCP service account key file. This is required if the `--method` flag is set to `gcp-iam`. The `service-account-key-path` flag can be substituted with the `INFISICAL_GCP_IAM_SERVICE_ACCOUNT_KEY_FILE_PATH` environment variable. ```bash infisical login --email= --password= ``` #### Description User email address. Required if you want to do a non-interactive login when the **--method** flag is set to **user**. Must be used together with the `--password` flag. You can omit the **--method=user** if you want as it's the default method. The `email` flag can be substituted with the `INFISICAL_EMAIL` environment variable. ```bash infisical login --email= --password= ``` #### Description User password. Required if you want to do a non-interactive login when the **--method** flag is set to **user**. Must be used together with the `--email` flag. For security in CI/CD environments, prefer using the `INFISICAL_PASSWORD` environment variable instead of passing the password as a command-line flag. You can omit the **--method=user** if you want as it's the default method. The `password` flag can be substituted with the `INFISICAL_PASSWORD` environment variable. ```bash infisical login --interactive ``` #### Description Forces interactive CLI login where you'll be prompted to enter your email and password in the terminal, instead of opening a browser. ```bash infisical login --email= --password= --plain ``` #### Description When used with direct user login or machine identity authentication, outputs only the JWT access token without any additional formatting. This is useful for scripting and CI/CD pipelines where you need to capture the token. ```bash # Example: Capture token in a variable export INFISICAL_TOKEN=$(infisical login --email= --password= --plain --silent) ``` Use it alongside the `silent` flag to disable all messages in the console except from the access token. ```bash infisical login --jwt= --machine-identity-id= ``` #### Description The JWT provided by an identity provider for OIDC or plain JWT authentication. This is required if the `--method` flag is set to `oidc-auth` or `jwt-auth`. The `jwt` flag can be substituted with the `INFISICAL_JWT` environment variable. ### User Authentication Examples The following examples demonstrate different ways to authenticate as a user with the Infisical CLI. By default, running `infisical login` without any flags opens your browser for authentication. ```bash # Opens browser for authentication infisical login ``` The browser will open to the Infisical login page, and upon successful authentication, the CLI will be automatically authenticated. Direct login is ideal for CI/CD pipelines and automation scripts where browser-based authentication is not possible. #### Using Command-Line Flags ```bash # Basic direct login (defaults to US Cloud) infisical login --email user@example.com --password "your-password" # EU Cloud (Custom domain) infisical login --email user@example.com --password "your-password" --domain https://eu.infisical.com # Output only JWT token for scripting export INFISICAL_TOKEN=$(infisical login --email user@example.com --password "your-password" --plain --silent) ``` #### Using Environment Variables (Recommended for CI/CD) ```bash # Set credentials as environment variables export INFISICAL_EMAIL="user@example.com" export INFISICAL_PASSWORD="your-password" # Login without additional flags infisical login # Or with plain output for token capture export INFISICAL_TOKEN=$(infisical login --plain --silent) ``` Interactive login prompts you to enter credentials in the terminal instead of opening a browser. ```bash # Force interactive CLI login infisical login --interactive ``` You'll be prompted to enter: - Email address - Password If you have SSO enabled, we recommend using the default browser login. ### Machine Identity Authentication Quick Start In this example we'll be using the `universal-auth` method to login to obtain an Infisical access token, which we will then use to fetch secrets with. ```bash export INFISICAL_TOKEN=$(infisical login --method=universal-auth --client-id= --client-secret= --silent --plain) # silent and plain is important to ensure only the token itself is printed, so we can easily set it as an environment variable. ``` Now that we've set the `INFISICAL_TOKEN` environment variable, we can use the CLI to interact with Infisical. The CLI will automatically check for the presence of the `INFISICAL_TOKEN` environment variable and use it for authentication. Alternatively, if you would rather use the `--token` flag to pass the token directly, you can do so by running the following command: ```bash infisical [command] --token= # The token output from the login command. ``` ```bash infisical secrets --projectId= --env=dev --recursive ``` This command will fetch all secrets from the `dev` environment in your project, including all secrets in subfolders. The `--recursive`, and `--env` flag is optional and will fetch all secrets in subfolders. The default environment is `dev` if no `--env` flag is provided.