How to Fix 401 Unauthorized - Invalid or expired Hugging Face token (Hugging Face Hub)
Quick Answer: This error occurs when the Hugging Face Hub rejects your authentication token due to expiration, revocation, or incorrect configuration. The fastest fix is to generate a new user access token from your Hugging Face account settings and re-authenticate your environment using the CLI or environment variables.
What Causes This Error
- The Hugging Face access token has expired or was revoked.
- The token was copied incorrectly with trailing spaces or missing characters.
- The local machine is not logged into the Hugging Face CLI.
- The environment variable (e.g., HUGGING_FACE_HUB_TOKEN or HF_TOKEN) is set to an invalid or old value.
Step-by-Step Fixes
Fix 1: Fix 1: Re-authenticate via Hugging Face CLI
Open your terminal and run `huggingface-cli login`.,Paste your newly generated User Access Token from your Hugging Face settings (ensure it has 'write' permissions if you plan to upload models).,Verify the login was successful by checking that the token was saved to `~/.huggingface/token`.
Fix 2: Fix 2: Set or Update the Environment Variable
Go to your Hugging Face profile settings and create a new Access Token.,Export the token in your terminal session using `export HF_TOKEN="your_token_here"` or `export HUGGING_FACE_HUB_TOKEN="your_token_here"`.,Add the token to your project's `.env` file if you are running applications locally via python-dotenv.
Fix 3: Fix 3: Clear Cached Credentials
Remove any corrupted or outdated cached credentials by deleting the local token file located at `~/.huggingface/token` or `~/.cache/huggingface/token`.,Run `huggingface-cli logout` to clear existing credentials from your system.,Log back in fresh using `huggingface-cli login`.
Advanced Fixes
Advanced Fix 1: Advanced: Programmatic Authentication in Python
Import the login function using `from huggingface_hub import login`.,Pass the token programmatically in your script: `login(token="hf_your_actual_token")` before downloading private or gated models.,Ensure CI/CD secrets (like GitHub Actions Secrets or GitLab CI variables) are updated with the latest token value if the error occurs in a pipeline.
FAQs
Q: What permissions does my Hugging Face token need?
A: For downloading public models, a read-only token is sufficient. However, if you are pushing models, datasets, or accessing gated repositories (like Llama or Gemma variants), you must use a token with 'write' permissions and explicitly accept the repository terms on the Hugging Face website.
Q: Where does the Hugging Face library look for the token by default?
A: The library checks the `HF_TOKEN` (and legacy `HUGGING_FACE_HUB_TOKEN`) environment variables first, followed by the locally stored token file in the Hugging Face cache directory (~/.huggingface/token or ~/.cache/huggingface/token).