# Claude Code

> Claude Code-কে Anthropic-compatible endpoint দিয়ে Tokens-এর সাথে জুড়ুন, opus, sonnet আর haiku alias একটা Tokens model-এ বসান, আর চেনা gateway error ঠিক করুন।

Claude Code হলো Anthropic-এর agentic coding CLI, যেটা VS Code আর JetBrains-এর ভেতরেও চলে। এটা Anthropic Messages API-তে কথা বলে, তাই `https://tokens.bd` দিতে হবে (শেষে `/v1` নয়)। request যায় [/v1/messages](/docs/messages)-এ।

:::warning[Claude-এর বাইরের model-এ নিশ্চয়তা নেই]
Anthropic-এর gateway docs-এ লেখা আছে, Claude Code-কে কোনো gateway দিয়ে Claude-এর বাইরের model-এ পাঠানো "doesn't support routing Claude Code to non-Claude models through any gateway"। বাস্তবে model ভালো tool calling পারলে এটা চলে, কিন্তু সেটা model ধরে ধরে আলাদা, আর কেউ গ্যারান্টি দেয় না। লম্বা agent session-এ কোনো model ঝামেলা করলে সেটা নিয়ে লড়াই না করে অন্য model-এ চলে যান।
:::

## Tokens CLI দিয়ে দ্রুত setup

[Tokens CLI](/docs/tokens-cli) browser দিয়ে আপনাকে sign in করায়, key তৈরি করে, model বেছে নিতে দেয় আর Claude Code-এর settings লিখে দেয়। এর জন্য Node 18 বা তার পরের version লাগবে।

:::code-tabs

```bash title="macOS / Linux"
curl -fsSL https://tokens.bd/cli/tokens.mjs -o tokens.mjs && node tokens.mjs setup --base-url https://tokens.bd --agents claude
```

```powershell title="Windows PowerShell"
iwr https://tokens.bd/cli/tokens.mjs -OutFile tokens.mjs; node tokens.mjs setup --base-url https://tokens.bd --agents claude
```

:::

CLI তিনটা value `~/.claude/settings.json`-এর `env` block-এ merge করে দেয়: `ANTHROPIC_BASE_URL`, `ANTHROPIC_AUTH_TOKEN` আর `ANTHROPIC_MODEL`। পুরোনো file-টা `settings.json.tokens-backup-<timestamp>` নামে রেখে দেওয়া হয়। file-এ comment বা syntax error থাকলে CLI সেটা ছুঁয়ে দেখে না, বরং আপনাকে [/dashboard/connect](/dashboard/connect)-এ পাঠিয়ে দেয়।

নিচে যে alias আর beta variable-গুলোর কথা আছে, CLI সেগুলো সেট করে না। setup-এর পর নিজে যোগ করে নিন। Claude-এর বাইরের model-এ লোকে যেসব উল্টাপাল্টা আচরণ দেখে, এগুলো তার বেশিরভাগই আটকে দেয়।

## Claude Code-এ ANTHROPIC_BASE_URL নিজে সেট করুন

Claude Code এখনো install না থাকলে আগে সেটা install করুন (macOS/Linux-এ `curl -fsSL https://claude.ai/install.sh | bash`, PowerShell-এ `irm https://claude.ai/install.ps1 | iex`, অথবা `npm install -g @anthropic-ai/claude-code`)। তারপর [/dashboard/keys](/dashboard/keys)-এ গিয়ে একটা key বানান ([API keys](/docs/api-keys) পাতায় বিস্তারিত আছে)।

### Option A: environment variable

কিছু পরীক্ষা করে দেখতে চাইলে, কিংবা key কোনো file-এ রাখতে না চাইলে এটা ভালো।

:::code-tabs

```bash title="macOS / Linux"
export TOKENS_API_KEY="tok_live_your_key"
export ANTHROPIC_BASE_URL="https://tokens.bd"
export ANTHROPIC_AUTH_TOKEN="$TOKENS_API_KEY"
export ANTHROPIC_MODEL="deepseek/deepseek-v4.1-flash"
export ANTHROPIC_DEFAULT_OPUS_MODEL="deepseek/deepseek-v4.1-flash"
export ANTHROPIC_DEFAULT_SONNET_MODEL="deepseek/deepseek-v4.1-flash"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="deepseek/deepseek-v4.1-flash"
export CLAUDE_CODE_SUBAGENT_MODEL="deepseek/deepseek-v4.1-flash"
export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
```

```powershell title="Windows PowerShell"
$env:TOKENS_API_KEY = "tok_live_your_key"
$env:ANTHROPIC_BASE_URL = "https://tokens.bd"
$env:ANTHROPIC_AUTH_TOKEN = $env:TOKENS_API_KEY
$env:ANTHROPIC_MODEL = "deepseek/deepseek-v4.1-flash"
$env:ANTHROPIC_DEFAULT_OPUS_MODEL = "deepseek/deepseek-v4.1-flash"
$env:ANTHROPIC_DEFAULT_SONNET_MODEL = "deepseek/deepseek-v4.1-flash"
$env:ANTHROPIC_DEFAULT_HAIKU_MODEL = "deepseek/deepseek-v4.1-flash"
$env:CLAUDE_CODE_SUBAGENT_MODEL = "deepseek/deepseek-v4.1-flash"
$env:CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS = "1"
```

:::

`$env:` দিয়ে সেট করলে value শুধু ওই PowerShell window-তে থাকে। নতুন window-তেও রাখতে চাইলে প্রতিটা variable-এর জন্য `setx NAME "value"` চালান।

### Option B: ~/.claude/settings.json

settings file-এর `env` block-এর value shell-এর export-এর চেয়ে জোরালো, মানে দুটো আলাদা হলে file-এরটাই চলবে। Windows-এ file-টা `%USERPROFILE%\.claude\settings.json`।

```json title="~/.claude/settings.json"
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://tokens.bd",
    "ANTHROPIC_AUTH_TOKEN": "tok_live_your_key",
    "ANTHROPIC_MODEL": "deepseek/deepseek-v4.1-flash",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek/deepseek-v4.1-flash",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek/deepseek-v4.1-flash",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek/deepseek-v4.1-flash",
    "CLAUDE_CODE_SUBAGENT_MODEL": "deepseek/deepseek-v4.1-flash",
    "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1",
    "CLAUDE_CODE_MAX_CONTEXT_TOKENS": "128000",
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
  }
}
```

:::warning[Key project file-এ রাখবেন না]
key শুধু আপনার user-level `~/.claude/settings.json`-এ রাখুন। কোনো repository-র `.claude/settings.json`-এ কখনো নয়। key কোনো file-এই রাখতে না চাইলে JSON থেকে `ANTHROPIC_AUTH_TOKEN` বাদ দিন, আর Option A-র মতো shell profile-এ export করুন।
:::

`128000` একটা placeholder। `CLAUDE_CODE_MAX_CONTEXT_TOKENS`-এ বসাবেন model-এর আসল context window, যেটা [/models](/models)-এ ওই model-এর পাতায় লেখা আছে।

variable-গুলো কী করে:

| Variable                                    | কী কাজ করে                                                                                                                                                      |
| ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ANTHROPIC_AUTH_TOKEN`                      | `Authorization: Bearer` পাঠায়। `ANTHROPIC_API_KEY`-ও চলে (এটা `x-api-key` পাঠায়), তবে interactive mode-এ একবার অনুমতি চায়। |
| `ANTHROPIC_MODEL`                           | session-এর model।                                                                                                                                               |
| `ANTHROPIC_DEFAULT_OPUS/SONNET/HAIKU_MODEL` | `opus`, `sonnet` আর `haiku` alias-এর পেছনের model। Haiku background task-ও চালায়।                                                                         |
| `CLAUDE_CODE_SUBAGENT_MODEL`                | subagent-এর model।                                                                                                                                              |
| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`    | request থেকে Claude-only beta field-এর বেশিরভাগ ছেঁটে ফেলে।                                                                                                     |

### VS Code extension

VS Code-এর user settings-এ একই variable-গুলো দিন:

```json title="settings.json (VS Code)"
{
  "claudeCode.environmentVariables": [
    { "name": "ANTHROPIC_BASE_URL", "value": "https://tokens.bd" },
    { "name": "ANTHROPIC_AUTH_TOKEN", "value": "tok_live_your_key" },
    { "name": "ANTHROPIC_MODEL", "value": "deepseek/deepseek-v4.1-flash" }
  ]
}
```

## Model বদলানো

`ANTHROPIC_MODEL` আর চারটা alias variable অন্য একটা id-তে বদলে Claude Code restart করুন। সবগুলো একসাথে মিলিয়ে রাখুন, নইলে `opus` alias আর background task পুরোনো model-ই চালাতে থাকবে। ঠিক id-টা copy করুন [/models](/models) থেকে, অথবা `node tokens.mjs models` থেকে, অথবা `GET /v1/models` থেকে। agent-এর কাজে কোন model ভালো, সেটা [Choosing a model](/docs/choosing-a-model)-এ আছে।

`/model` picker-এ Tokens-এর model নিজে থেকে দেখা যাবে না। Claude Code-এর gateway model discovery শুধু সেই id রাখে যার মধ্যে `claude` বা `anthropic` আছে। picker-এ আরও একটা entry যোগ করতে চাইলে `ANTHROPIC_CUSTOM_MODEL_OPTION`-এ একটা model id বসিয়ে দিন।

## ঠিকমতো চলছে কি না দেখুন

আগে endpoint-টা সরাসরি test করুন (macOS, Linux, WSL বা Git Bash-এ):

```bash
curl -sS -w '\n%{http_code}\n' -X POST "https://tokens.bd/v1/messages" \
  -H "Authorization: Bearer $TOKENS_API_KEY" \
  -H "anthropic-version: 2023-06-01" -H "content-type: application/json" \
  -d '{"model": "deepseek/deepseek-v4.1-flash", "max_tokens": 1, "messages": [{"role": "user", "content": "."}]}'
```

`200` এলে বুঝবেন key আর model দুটোই ঠিক আছে। এরপর `claude` চালিয়ে `/status` লিখুন। দেখুন base URL-এর লাইনে `https://tokens.bd` আছে কি না, আর auth token-এর লাইনে `ANTHROPIC_AUTH_TOKEN` নাম আসছে কি না। `claude doctor` আপনার settings file-গুলো যাচাই করে দেয়। request-টা Dashboard-এর Usage analytics-এও দেখা যাওয়ার কথা।

## সমস্যা হলে

**প্রতিটা request-এ 404।** base URL-এর শেষে `/v1` আছে। Claude Code নিজেই `/v1/messages` জুড়ে নেয়, তাই দিন `https://tokens.bd`।

**নতুন key export করার পরও 401 `invalid_api_key`।** `~/.claude/settings.json`-এর `env` block আপনার shell-কে ছাপিয়ে যায়। `/status` কোন value দেখাচ্ছে, সেটা দেখুন।

**`thinking`, effort বা অচেনা field নিয়ে 400 error।** Claude Code যে model id চেনে না, তার জন্য adaptive thinking, effort আর beta tool field পাঠায়। `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` এগুলোর বেশিরভাগ সরিয়ে দেয়, তবে thinking আর effort যায় না। upstream সেগুলো ফিরিয়ে দিলে Claude Code ওগুলো ছাড়াই আবার চেষ্টা করে। তারপরও কোনো model আটকে গেলে অন্য model চেষ্টা করুন।

**session কখনো compact হয় না, নয়তো "prompt too long" আসে।** অচেনা id হলে Claude Code ধরে নেয় context 200K token। `CLAUDE_CODE_MAX_CONTEXT_TOKENS`-এ model-এর আসল window বসিয়ে দিন। আরও সূক্ষ্মভাবে ঠিক করতে চাইলে `CLAUDE_CODE_AUTO_COMPACT_WINDOW` (সর্বনিম্ন 100,000) আর `CLAUDE_CODE_MAX_OUTPUT_TOKENS` আছে।

**usage log-এ অপ্রত্যাশিত model।** background task চলে `ANTHROPIC_DEFAULT_HAIKU_MODEL` দিয়ে। সেটা সেট করা না থাকলে চলে main model।

**কিছু feature নেই।** gateway credential সেট থাকলে Remote Control আর voice dictation বন্ধ থাকে। fast mode সরাসরি Anthropic-এর API দেখে, তাই Tokens দিয়ে সেটা চলবে না।

**403 `model_not_allowed_on_key` বা `tier_permission_denied`, 402, অথবা 429 `window_exhausted`।** এগুলো আপনার অ্যাকাউন্টের সীমার ব্যাপার, Claude Code-এর সমস্যা নয়। [Troubleshooting](/docs/troubleshooting) দেখুন, আর ticket খুললে `x-tokens-request-id` header-এর value-টা সাথে দিন।

---
Page: https://tokens.bd/bn/docs/claude-code
