Common Issues
Answers to the most frequently encountered problems when setting up and using Escher.
Desktop app
App won't launch / crashes on startup
- Check macOS version — Escher requires macOS 13 (Ventura) or later.
- Check that Xcode Command Line Tools are installed:
xcode-select --install - If you see a security warning ("app is damaged"), run:bash
xattr -cr /Applications/Escher.app - Check the crash log in Console.app → Reports.
"Cannot connect to keychain" error
The vault plugin uses the macOS Keychain. Ensure the app has keychain access:
- Open Keychain Access → search for
escher - If an existing entry is locked or corrupted, delete it and re-authenticate
Cloud connections
AWS profile shows "Invalid credentials"
- Verify the profile exists:
aws sts get-caller-identity --profile YOUR_PROFILE - Ensure the IAM user/role has the required permissions — see AWS Connection
- If using SSO, re-authenticate:
aws sso login --profile YOUR_PROFILE - Check that the profile region is set correctly in
~/.aws/config
Estate scan returns 0 resources
- Check that the profile has
ec2:Describe*,s3:List*, andiam:List*permissions - Verify the correct region is configured for the scan
- Try running a manual refresh: Estate → ↻ Refresh
Azure connection fails with "Insufficient privileges"
Ensure the service principal or user account has the Reader role on the target subscription:
bash
az role assignment list --assignee YOUR_EMAIL --subscription YOUR_SUB_IDBackend services
Gateway returns 502 Bad Gateway
The ALB target group health check is failing. Check:
- ECS service is running:
aws ecs describe-services --cluster escher-v2 --services escher-gateway - Health check endpoint:
GET /q/healthshould return{"status":"UP"} - Security group allows ALB → Gateway on port 8080
Analysis Agent returns "Anthropic API error"
- Verify
ANTHROPIC_API_KEYis set and valid - Check rate limits — Anthropic API has per-minute token limits
- Look at Analysis Agent logs in CloudWatch:
/ecs/escher-analysis-agent
Context Engine returns 503
Asset Store may be unhealthy. Check:
bash
curl http://asset-store.escher.internal:8000/health
# Expected: {"status":"ok"}If unhealthy, check SurrealDB connectivity.
ADK
adk register fails with "domain not found"
The classification.domain in your agent.yaml must match a registered domain. List valid domains:
bash
adk list domains --ce-url http://localhost:8001
# Returns: security, compliance, cost, performance, reliabilityadk validate reports "missing required field"
Check against the required fields in the agent.yaml Reference. Common misses:
classification.domain— must be a registered domaincapabilities[]— at least one entry requiredskills[].skill_id— must followdomain.verb_nounpattern
Next steps
- Troubleshooting — Detailed diagnostic steps
- AWS Connection — Fixing IAM permission issues
- Docker Compose — Local stack setup