Skip to content

Troubleshooting

This page covers the most common issues you’ll encounter and how to fix them.

The CLI isn’t on your PATH.

Terminal window
# Check if the binary exists
ls -la ~/.local/bin/gee-code
# Add to your shell profile (~/.zshrc or ~/.bashrc)
export PATH="$HOME/.local/bin:$PATH"
# Reload your shell
source ~/.zshrc

If the binary doesn’t exist, reinstall:

Terminal window
curl -fsSL https://gee-desktop.s3.amazonaws.com/GeeCode/install.sh | bash

Gee-Code requires Python 3.10 or later.

Terminal window
# Check your version
python3 --version
# macOS: install via Homebrew
brew install python@3.12
# Linux: use your package manager
sudo apt install python3.12

If you have multiple Python versions, ensure python3 points to 3.10+.

The MCP server layer requires Node.js 18+.

Terminal window
node --version
# macOS
brew install node
# Linux
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install nodejs

Gee-Code resolves API keys in this order:

  1. Credentials store — scoped credentials (gee/team/endeavor)
  2. Credentials file~/.gee-code/credentials.json
  3. Environment variable — e.g., ANTHROPIC_API_KEY
  4. Gee backend — via your authenticated session

To fix:

Terminal window
# Option 1: Set an environment variable
export ANTHROPIC_API_KEY=sk-ant-your-key-here
# Option 2: Authenticate to the Gee platform
gee-code auth login
# Option 3: Check what's configured
gee-code config show

“401 Unauthorized” or “Invalid credentials”

Section titled ““401 Unauthorized” or “Invalid credentials””

Your API key or session token is invalid or expired.

  • Provider API key: Verify it in the provider’s dashboard (Anthropic Console, OpenAI Platform, etc.)
  • Gee session: Re-authenticate with gee-code auth login
  • Check for typos: Look for trailing spaces or missing characters in your key
  • Key format: Anthropic keys start with sk-ant-, OpenAI keys start with sk-

The credentials file should have restricted permissions:

Terminal window
chmod 600 ~/.gee-code/credentials.json

If the file is corrupted, delete it and re-authenticate:

Terminal window
rm ~/.gee-code/credentials.json
gee-code auth login

”Model not found” or “Unknown model alias”

Section titled “”Model not found” or “Unknown model alias””

Use /models to see all available models and their aliases.

Common aliases:

AliasModel
claude or sonnetClaude Sonnet 4.5
opusClaude Opus 4.6
haikuClaude Haiku 4.5
gpt-5GPT-5
gpt-4oGPT-4o
groq-llamaLlama via Groq

Switch models with:

/model sonnet
/model opus

For custom or full model IDs, use the complete identifier (e.g., claude-opus-4-6).

You’ve hit the provider’s rate limit. Gee-Code retries automatically with exponential backoff (2s, 4s, 8s, up to 60s).

If you keep hitting limits:

  1. Switch providers/model gpt-5 or /model groq-llama
  2. Wait — check the error message for the reset time
  3. Reduce load — avoid rapid multi-turn loops on rate-limited providers
  4. Check your plan — some providers have tier-based rate limits

Groq and Cerebras enforce minimum intervals between requests (2s and 1s respectively). This is handled automatically.

The AI provider is temporarily overloaded. Gee-Code retries automatically. If it persists, switch to a different provider with /model.


Gee-Code uses absolute paths internally. If a file operation fails:

Terminal window
# Verify the file exists
ls -la /path/to/file
# Check your working directory
pwd
# Use /cwd to change the working directory
/cwd /path/to/project

Bash commands timeout after 120 seconds by default. For long-running operations:

  • The AI can increase the timeout per-command (up to 600s)
  • Dev servers are automatically backgrounded
  • Use /status to check running background jobs
  • Use KillPort to stop a server on a specific port
Section titled “”Command blocked: Overly broad search””

Gee-Code blocks filesystem searches that target excessively broad paths (like / or ~/) to prevent system hangs. Narrow your search:

# Instead of searching everything:
# find / -name "*.py"
# Target a specific directory:
# find ./src -name "*.py"

The Glob and Grep tools handle this automatically by skipping .git, node_modules, __pycache__, and other noise directories.


”Token limit exceeded” or context too large

Section titled “”Token limit exceeded” or context too large”

Gee-Code manages context automatically. When context approaches the limit (~180k tokens), it compacts older messages down to ~40k tokens. Tool outputs are the first to be trimmed.

If you’re hitting limits frequently:

  1. Start a fresh conversation/clear
  2. Be selective with context — use /add for specific files rather than entire directories
  3. Use named sessions — keep different tasks in separate sessions to avoid context bloat

Files over 100k characters are truncated when read into context. For large files:

  • Read specific line ranges: the AI can use offset and limit parameters
  • Search within files using Grep instead of reading the whole file
  • Break large operations into smaller, focused tasks

The MCP server is the tool execution layer. If it fails:

Terminal window
# Check if the port is already in use
lsof -i :8090
# Kill the existing process
kill -9 <PID>

If dependencies are missing, reinstall:

Terminal window
pip install -r requirements.txt

Some tools are excluded from MCP for safety:

  • Task / TaskOutput / TaskList / TaskCancel — prevents recursive agent spawning
  • AskUserQuestion — requires terminal interaction (uses file-based IPC in MCP mode)

If a tool isn’t available, use it directly in the terminal session instead.


Terminal window
# List available skills
/skills
# Check local skill directories
ls -la .gee/skills/
ls -la ~/.gee-code/skills/

If a skill exists locally but isn’t recognized, sync it:

# Validate first
/validate .gee/skills/my-skill
# Then sync to server
# (use SyncSkill tool or gee-code sync-skill)

Autonomous agents have skill creation limits to prevent runaway behavior:

LimitDefault
Per activation1
Per day3
Total self-created20
Max active5
Max instruction tokens2,000
Auto-disable after failures3 consecutive

These can be adjusted in your configuration if needed.

Certain actions require explicit approval, even in autonomous mode:

  • Destructive git operations (force push, hard reset)
  • Creating or deleting skills
  • Bead plan approval
  • File operations outside the working directory

Review the action in the approval prompt before accepting.


Check that the memory system is enabled:

Terminal window
gee-code config show
# Look for: memory_enabled: true

Enable it if disabled:

Terminal window
gee-code config set memory_enabled true

If your session state seems wrong or the ledger file is corrupted:

Terminal window
# Back up the current ledger
cp .gee/continuity.md .gee/continuity.md.bak
# Delete and let it regenerate
rm .gee/continuity.md

The ledger will be recreated on the next session.

Named sessions are stored per-project. To resume:

/resume

This shows recent sessions. If a session doesn’t appear:

  • Verify you’re in the correct project directory
  • Check that .gee/ exists in the project root
  • Sessions from other projects won’t appear

If Gee-Code fails to start with a JSON error:

Terminal window
# Validate the config file
python3 -m json.tool ~/.gee-code/config.json
# If corrupted, reset to defaults
rm ~/.gee-code/config.json

Gee-Code recreates config files with defaults when they’re missing.

If project-specific features aren’t working:

Terminal window
# Initialize the project
/init
# This creates .gee/ with:
# - gee.md (project guidance)
# - config.json (project settings)
# - continuity.md (session state)

If your issue isn’t covered here:

  • Check the logs — Gee-Code outputs diagnostic information to the terminal
  • Use /status — shows current state, running tasks, and potential issues
  • File an issuegithub.com/mj12ep/gee-code/issues
  • Join the community — ask in the Gee community forums