| # Extract Claude OAuth token from macOS Keychain for use in Docker container | |
| # Usage: ./scripts/get-claude-token.sh | |
| # or: export CLAUDE_OAUTH_TOKEN=$(./scripts/get-claude-token.sh) | |
| set -e | |
| # Only works on macOS (uses security command for Keychain access) | |
| if [[ "$OSTYPE" != "darwin"* ]]; then | |
| echo "Error: This script only works on macOS." >&2 | |
| echo "On Linux, mount ~/.claude directory directly instead." >&2 | |
| exit 1 | |
| fi | |
| # Check if security command exists | |
| if ! command -v security &> /dev/null; then | |
| echo "Error: 'security' command not found." >&2 | |
| exit 1 | |
| fi | |
| # Get the current username | |
| USERNAME=$(whoami) | |
| # Extract credentials from Keychain | |
| CREDS=$(security find-generic-password -s "Claude Code-credentials" -a "$USERNAME" -w 2>/dev/null) | |
| if [ -z "$CREDS" ]; then | |
| echo "Error: No Claude credentials found in Keychain." >&2 | |
| echo "Make sure you've logged in with 'claude login' first." >&2 | |
| exit 1 | |
| fi | |
| # Output the full credentials JSON (contains accessToken and refreshToken) | |
| echo "$CREDS" | |