
Claude Code の起動時に --glm フラグを渡すだけで、GLM API に自動切り替えできるシェル関数を実装しました。
私自身、Claude Codeで異なるAPIバックエンドを試す際に毎回環境変数をexportし直すのが面倒で、もっと手軽に切り替えたいと感じていました。
こんな人におすすめ
- Claude Codeで複数のAPIバックエンドを使い分けたい方
- 毎回の環境変数設定が面倒だと感じている方
- シェル関数でCLIツールをカスタマイズする方法に興味がある方
目次
背景
Claude Code はデフォルトで Anthropic API を使用しますが、環境変数 ANTHROPIC_BASE_URL などを設定することで、互換 API に切り替えることができます。
ただし、毎回手動で環境変数を設定するのは手間でした。
export を何度も打ち直す作業は、正直なところストレスを感じていました。
つまづいた点
最初は alias で対応しようとしましたが、引数の受け渡しがうまくいかず困りました。
--glm だけを取り除いて残りの引数を渡す必要があるため、シェル関数でのラップが必要だと気づきました。
また、関数名を claude にすると再帰呼び出しになってしまう問題にもハマりました。
command ビルトインを使うことで解決できましたが、意外にも見落としがちなポイントです。
実装
~/.zshrc に以下のシェル関数を追加します:
# GLM API トークン(Claude --glm 用)
export _GLM_AUTH_TOKEN="your-token-here"
# Claude Code GLM モード対応
claude() {
local glm_mode=false
local args=()
for arg in "$@"; do
if [[ "$arg" == "--glm" ]]; then
glm_mode=true
else
args+=("$arg")
fi
done
if $glm_mode; then
echo "🔄 GLM モードで起動します..."
ANTHROPIC_AUTH_TOKEN="${_GLM_AUTH_TOKEN}" \
ANTHROPIC_BASE_URL="https://api.z.ai/api/anthropic" \
API_TIMEOUT_MS="3000000" \
ANTHROPIC_DEFAULT_OPUS_MODEL="glm-4.7" \
ANTHROPIC_DEFAULT_SONNET_MODEL="glm-4.7" \
ANTHROPIC_DEFAULT_HAIKU_MODEL="glm-4.5-air" \
command claude "${args[@]}"
else
command claude "$@"
fi
}
ポイント
- 引数のパース:
--glmフラグを検出して環境変数を設定 - 他のオプションの維持:
--chromeなど他のオプションはそのまま渡される - 再帰防止:
command claudeを使用して関数自身の再帰呼び出しを防止
使い方
# 通常起動(変更なし)
claude
# GLM モード
claude --glm
# 他のオプションと併用
claude --glm --chrome
学び
- シェル関数でコマンドをラップすることで、条件に応じて環境変数を動的に設定できます
commandを使うことで、関数と同名のコマンドを明示的に呼び出せます- 引数パースは
forループと配列でシンプルに実装できます
実際にこの関数を導入してからは、APIの切り替えが claude --glm の1コマンドで済むようになり、毎回のexport作業が不要になりました。
ちょっとした工夫ですが、日常の開発体験が格段に良くなったと感じています。


