#!/usr/bin/env bash # claude-glm — Run Claude Code with GLM backend # # Usage: # claude-glm [args...] # # Setup API key (reuse existing): # macOS: # security add-generic-password -a "$USER" -s GLM_API_KEY -w "YOUR_KEY" # Linux: # echo "YOUR_KEY" | secret-tool store --label "GLM API Key" service GLM_API_KEY KEY_NAME="GLM_API_KEY" if [ -n "${!KEY_NAME}" ]; then TOKEN="${!KEY_NAME}" fi get_token() { if command -v security >/dev/null 2>&1; then security find-generic-password -s "$KEY_NAME" -w 2>/dev/null && return fi if command -v secret-tool >/dev/null 2>&1; then secret-tool lookup service "$KEY_NAME" 2>/dev/null && return fi return 1 } if [ -z "$TOKEN" ]; then TOKEN=$(get_token) fi if [ -z "$TOKEN" ]; then echo "❌ Missing GLM token ($KEY_NAME)" exit 1 fi export ANTHROPIC_BASE_URL="https://api.z.ai/api/anthropic" export ANTHROPIC_AUTH_TOKEN="$TOKEN" export ANTHROPIC_DEFAULT_HAIKU_MODEL="glm-4.5-air" export ANTHROPIC_DEFAULT_SONNET_MODEL="glm-5.1" export ANTHROPIC_DEFAULT_OPUS_MODEL="glm-5.1" echo "→ Backend: GLM" has_permission_mode=false for arg in "$@"; do if [ "$arg" = "--permission-mode" ] || [[ "$arg" == --permission-mode=* ]]; then has_permission_mode=true break fi done if [ "$has_permission_mode" = true ]; then exec claude "$@" else exec claude --permission-mode auto "$@" fi