Cannot perform an interactive login from a non TTY device CI/CD Origin: Build & delivery Last updated 25 Oct 2026

GitHub Actions: Error: Cannot perform an interactive login from a non TTY device

docker login asked for a password interactively, but CI has no terminal — pass credentials non-interactively.

Exact message you may see Cannot perform an interactive login from a non TTY deviceError: Cannot perform an interactive login from a non TTY devicedocker login non TTYdocker login --password-stdin CI
Seen on: GitHub Actions Docker

Meaning

In CI, supply the password via stdin with --password-stdin, or use docker/login-action. The error also appears when the secret is empty, because docker then falls back to prompting.

Common causes

  • docker login -u user without a password
  • Password secret empty (so docker prompts)
  • Old tutorial using -p (insecure, may be blocked)
  • Wrong registry URL in the command
  • Missing --password-stdin pipe

⚡ Quick fix

  1. Use docker/login-action with secrets
  2. Or echo "$TOKEN" | docker login ghcr.io -u "$USER" --password-stdin
  3. Confirm the secrets exist and are not empty

Detailed fix by platform

GitHub Actions

  1. uses: docker/login-action@v3 with registry, username and password
  2. For GHCR use password: ${{ secrets.GITHUB_TOKEN }} and permissions: packages: write

Code examples

Non-interactive login

yaml
- uses: docker/login-action@v3
  with:
    registry: ghcr.io
    username: ${{ github.actor }}
    password: ${{ secrets.GITHUB_TOKEN }}

How to diagnose

  1. Command — Password via stdin?
  2. Secret — Non-empty?
  3. Registry — Correct host?

🔧 Still not fixed?

Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:

Where this error sits

Origin: Build & delivery. Errors that are often confused with or caused by this one (click to open):

API rate limit exceeded — GitHub Actions: HttpError: API rate limit exceeded for installation ID 123456 / secondary rate limit (CI/CD)API rate limit exceed…Cache not found / Unable to reserve cache — GitHub Actions: Cache not found for input keys: npm-Linux-abc123 / Failed to save: Unable to reserve cache with key, another job may be creating this cache (CI/CD)Cache not found / Una…Cannot connect to the Docker daemon (GitLab) — GitLab CI: Cannot connect to the Docker daemon at tcp://docker:2375. Is the docker daemon running? (CI/CD)Cannot connect to the…Could not find credentials entry — Jenkins: ERROR: Could not find credentials entry with ID 'github-token' (CI/CD)Could not find creden…Credentials could not be loaded — GitHub Actions: Error: Credentials could not be loaded, please check your action inputs: Could not load credentials from any providers (CI/CD)Credentials could not…denied — denied: requested access to the resource is denied (docker push) (Docker)deniedfailed to pull image (GitLab) — GitLab CI: ERROR: Job failed: failed to pull image "registry.example.com/app:latest" with specified policies [always]: access forbidden (CI/CD)failed to pull image …permission denied /var/run/docker.sock — Jenkins: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock (CI/CD)permission denied /va…Cannot pe…

Explore the map of this error Full error map →

🧠 Still stuck? Analyze your error

Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.

💬 What worked for others

No tips yet — did something else fix this for you?

Share what worked for you

Tips are checked by an editor before they appear. Links are removed.