Skip to content

Troubleshooting

Common issues and how to work around them. This page is growing — open an issue on GitHub if you hit something that isn't covered here.

The CLI can't find my credentials

Glue looks for credentials in this order:

  1. Environment variables (ANTHROPIC_API_KEY, OPENAI_API_KEY, MISTRAL_API_KEY, GEMINI_API_KEY, GROQ_API_KEY, etc.)
  2. ~/.glue/credentials.json
  3. A keychain integration (planned)

Double-check the env var name matches the provider exactly. glue --debug prints the resolution order at startup.

Docker runtime falls back to host

If you set docker.enabled: true but the session runs on the host, look for a notice in the status bar. Common causes:

  • Docker Desktop isn't running.
  • The image in docker.image isn't pulled yet — run docker pull <image>.
  • The path in docker.mounts doesn't exist.

With docker.fallback_to_host: true, Glue drops back to host instead of refusing to start. Set fallback_to_host: false to fail loudly instead.

The model I want isn't in the catalog

The bundled catalog is curated. To add a model:

  • Drop models.yaml into ~/.glue/ with your provider/model entry. It merges on top of the bundled catalog.
  • Or use adapter: openai with base_url pointing at any OpenAI-compatible endpoint.

See Models and Providers.

My session file looks weird

Sessions are append-only JSONL. A partial last line means the CLI crashed mid-event — the rest of the file is still valid. You can safely re-open the session.

If meta.json is missing but conversation.jsonl exists, the session is effectively orphaned — move or delete the directory.

Cloud runtime failed to bootstrap

Daytona, Sprites, and Modal sandboxes have to clone or upload your repo before the agent can work. When that step fails, Glue classifies the error (via BootstrapErrorKind) and prints a remediation hint instead of a bare exit code. Common kinds:

KindWhat it meansWhat to try
authThe sandbox couldn't authenticate to your git remote (401, missing token).Use the bundle bootstrap path (don't rely on sandbox-side credentials), or set up an HTTPS token.
samlSSO/SAML enforcement rejected the token.Authorise the token for the org in your SSO provider.
networkDNS / connect timeout / proxy block reaching the remote from the sandbox.Check the sandbox's outbound network policy; retry.
missingBinarygit (or another required helper) isn't on PATH inside the sandbox image.Use a base image that includes git, or switch runtimes.
prepWorkspace prep (mkdir / chown) failed in the sandbox.Usually transient — retry; otherwise file an issue.
uploadUploading the host-side bundle to the sandbox failed.See "Bundle exceeds upload cap" below.
cloneBundleThe uploaded bundle couldn't be cloned inside the sandbox.Re-run; if it persists, check that your local git produces a valid bundle.
checkoutgit checkout <sha> failed inside the sandbox.Make sure the commit is reachable (committed, not just staged) before starting.

Bundle exceeds upload cap

The bundle bootstrap path packs your working tree into a git bundle and ships it to the sandbox. Each runtime has its own per-call upload cap:

RuntimeBundle cap
Daytona200 MB
Modal30 MB
Sprites3 MB

If your bundle exceeds the cap, the bootstrap fails with upload / cloneBundle. Workarounds: trim large binaries / node_modules / .venv from the tree, commit and push so the sandbox can clone from the remote instead, or switch to a runtime with a larger cap.

glue session apply conflicts

When you apply a captured session patch back to your host workspace, the git am --3way (or fallback git apply --3way) step can hit conflicts — typically because your host moved on while the agent was working in the sandbox. Glue surfaces .rej files for the offending hunks:

git am and git apply both failed. Inspect rejections or apply manually:
  rejection: /path/to/file.dart.rej

Options:

  • Apply to a clean checkout instead: git worktree add /tmp/review HEAD then glue session apply <id> --target /tmp/review.
  • Pick a different base: glue session apply <id> --branch glue/<id> creates a fresh branch from current HEAD; the default name is the same.
  • Inspect first: glue session show <id> for metadata, glue session diff <id> for the full patch.

See Session patches for the full workflow.

Tools hang waiting for approval

The default approval mode is confirm. Every untrusted tool asks before running. Set approval_mode: auto in ~/.glue/config.yaml if you want Glue to run tools without prompting (use sparingly).

Filing an issue

  • Include the glue --version output.
  • Include the relevant lines from conversation.jsonl (redact any secrets first).
  • Note which runtime you're using (host, Docker).

Released under the MIT License.