SSD Nodes Learn Hosting plans →
Hướng dẫn Matt ConnorBởi Matt Connor

Cách đổi model trong Claude Code để tiết kiệm hạn mức

Đổi model trong Claude Code bằng /model, cờ khởi động, biến môi trường hay settings.json. Hiểu thứ tự ưu tiên, opusplan, model cho subagent và vì sao đổi model không gỡ được giới hạn.

Đổi model trong Claude Code: câu trả lời ngắn

Để đổi model trong Claude Code, gõ /model trong phiên đang chạy rồi chọn model, hoặc gõ thẳng /model sonnet. Muốn chọn model ngay lúc mở, chạy claude --model sonnet. Muốn một model làm mặc định lâu dài, ghi trường model vào file settings.json.

Có năm cách đặt model, và chúng có thứ tự ưu tiên. Phần lớn lỗi "đã đổi model mà lần sau vẫn mở model cũ" đến từ thứ tự này. Bài viết đi qua từng cách, kèm lệnh cho cả PowerShell trên Windows lẫn bash trên Linux và macOS. Phần sau bài nói về hạn mức: model là thứ bạn tự điều chỉnh được để hạn mức của gói Pro hoặc Max kéo dài hơn. Nếu bạn chạy Claude Code trên máy Linux, xem thêm cách dùng Claude trên Linux, bản desktop và bản CLI.

Thứ tự ưu tiên khi đặt model trong Claude Code

Claude Code đọc model từ năm nơi. Khi nhiều nơi cùng đặt model, nơi đứng trước thắng. Thứ tự dưới đây lấy từ trang cấu hình model trong tài liệu chính thức:

  1. /model trong phiên đang chạy.
  2. Cờ --model lúc khởi động.
  3. Biến môi trường ANTHROPIC_MODEL.
  4. Trường model trong file settings.
  5. Biến môi trường ANTHROPIC_DEFAULT_MODEL, chỉ dùng cho phiên mới.

Một ví dụ hay gặp: bạn đặt ANTHROPIC_MODEL=opus vĩnh viễn trong hồ sơ shell, rồi chọn Sonnet bằng /model. Phiên này chạy Sonnet. Lần mở sau, Claude Code quay lại Opus, vì tài liệu ghi rõ: khi ANTHROPIC_MODEL được đặt, lần khởi động sau sẽ dùng model của biến đó, bất kể bạn đã lưu gì bằng /model.

Cách 1: đổi model giữa phiên bằng /model

/model
/model sonnet

Gõ /model không kèm tham số để mở bảng chọn. Trong bảng chọn có hai phím cần nhớ:

  • Enter: đổi model và lưu làm mặc định cho các phiên mới.
  • s: đổi model cho phiên này thôi, mặc định giữ nguyên.

Gõ thẳng /model sonnet có tác dụng giống nhấn Enter, nghĩa là lựa chọn cũng được lưu. Claude Code lưu bằng cách ghi trường model vào file settings người dùng. Nếu file đó không ghi được, thay đổi chỉ có tác dụng trong phiên hiện tại và mất ở phiên sau.

Điểm này dễ nhầm. Bạn muốn thử Opus cho một việc khó, nên gõ /model opus. Việc xong, nhưng từ đó mọi phiên mới đều mở bằng Opus, vì lệnh gõ thẳng đã lưu Opus làm mặc định. Với những lần thử như vậy, mở bảng chọn và nhấn s.

Cách 2: chọn model lúc khởi động bằng claude --model

claude --model opus

Cờ --model nhận bí danh (alias) như opus hoặc tên model đầy đủ. Nó chỉ áp dụng cho phiên bạn mở bằng nó và không lưu gì vào settings. Vì vậy, khi cần chạy hai model cùng lúc trong hai terminal, tài liệu khuyên mở mỗi terminal bằng một cờ --model riêng thay vì chuyển qua lại bằng /model.

Cách 3: biến ANTHROPIC_MODEL trên PowerShell và bash

Trên Linux hoặc macOS, với bash hoặc zsh, đặt biến cho terminal hiện tại rồi mở Claude Code:

export ANTHROPIC_MODEL=sonnet
claude

Trên Windows, với PowerShell, đặt biến cho cửa sổ terminal hiện tại:

$env:ANTHROPIC_MODEL = "sonnet"
claude

Muốn biến có hiệu lực cho mọi terminal mở sau này, ghi nó vào tài khoản người dùng Windows, rồi đóng terminal và mở terminal mới. Terminal đang mở không đọc lại biến này.

[Environment]::SetEnvironmentVariable("ANTHROPIC_MODEL", "sonnet", "User")

Giống cờ --model, ANTHROPIC_MODEL chỉ áp dụng cho phiên được mở trong lúc biến tồn tại. Vấn đề là khi bạn đặt nó vĩnh viễn, biến tồn tại trong mọi phiên. Khi đó lựa chọn lưu bằng /model luôn thua biến này ở lần mở sau. Nếu bạn muốn một mặc định lâu dài mà vẫn đổi được bằng /model, dùng file settings ở cách 4 và gỡ biến đi:

unset ANTHROPIC_MODEL
Remove-Item Env:ANTHROPIC_MODEL
[Environment]::SetEnvironmentVariable("ANTHROPIC_MODEL", $null, "User")

Dòng PowerShell đầu gỡ biến khỏi terminal hiện tại. Dòng thứ hai gỡ biến khỏi tài khoản người dùng, nên các terminal mới cũng không còn thấy nó. Với bash, nhớ xóa cả dòng export trong ~/.bashrc hoặc ~/.zshrc nếu bạn đã thêm vào đó.

Cách 4: trường model trong settings.json

File settings người dùng áp dụng cho bạn trong mọi dự án trên máy. Nó nằm ở:

  • Linux và macOS: ~/.claude/settings.json.
  • Windows: tài liệu ghi ~/.claude nghĩa là %USERPROFILE%\.claude, nên file là %USERPROFILE%\.claude\settings.json.

Nếu bạn đặt biến CLAUDE_CONFIG_DIR, Claude Code lưu settings ở thư mục đó thay vì thư mục mặc định. File được tạo ra lần đầu bạn đổi một tùy chọn thuộc settings người dùng, ví dụ khi nhấn Enter trong bảng chọn /model. Bạn cũng có thể tự tạo nó:

{
  "model": "sonnet"
}

File settings là JSON nghiêm ngặt: không được có chú thích, không được có dấu phẩy thừa ở phần tử cuối. Trên Windows, nếu không muốn tìm thư mục bằng tay, mở file bằng lệnh notepad "$env:USERPROFILE\.claude\settings.json" trong PowerShell.

Vì sao model trong settings người dùng bị bỏ qua trong một dự án?

Settings người dùng có mức ưu tiên thấp nhất trong các file settings. Thứ tự từ cao xuống thấp là: settings do tổ chức quản lý (managed), tham số dòng lệnh, .claude/settings.local.json của dự án, .claude/settings.json dùng chung của dự án, rồi mới đến ~/.claude/settings.json. Nếu repo có file .claude/settings.json ghi "model": "sonnet", dự án đó mở bằng Sonnet dù file của bạn ghi gì. Muốn đổi model cho riêng mình mà không sửa file chung của nhóm, ghi trường model vào .claude/settings.local.json. Chỉ phiên của bạn thay đổi.

Cách 5: ANTHROPIC_DEFAULT_MODEL, mặc định yếu nhất

ANTHROPIC_DEFAULT_MODEL chỉ quyết định model của phiên mới khi không có gì khác chọn model. Nghĩa là không có cờ --model, không có ANTHROPIC_MODEL, không có trường model trong bất kỳ file settings nào (kể cả lựa chọn đã lưu bằng /model), và tổ chức của bạn không đặt model mặc định. Biến này cần Claude Code v2.1.236 trở lên.

Claude Code bỏ qua biến này nếu giá trị là default, inherit, opusplan hoặc haiku. Vì vậy, đừng dùng nó để cho mọi phiên chạy Haiku hay opusplan: giá trị đó không có tác dụng. Nếu thật sự cần, dùng trường model trong settings.

Các bí danh model: default, best, fable, opus, sonnet, haiku

Bí danh là tên ngắn trỏ tới một model cụ thể. Model mà một bí danh trỏ tới có thể khác nhau giữa các phiên bản Claude Code và giữa các nhà cung cấp, nên bài này tách tên model ra một đoạn riêng có ghi ngày.

  • default: không phải bí danh của model nào. Đây là giá trị đặc biệt: nó xóa mọi lựa chọn model đang đặt và trả về model mặc định của tài khoản bạn.
  • best: dùng model mà fable trỏ tới, nếu tài khoản của bạn dùng được Fable. Nếu không, nó dùng cùng model với opus.
  • fable: cho những việc khó nhất và chạy lâu nhất.
  • opus: cho suy luận phức tạp.
  • sonnet: cho việc lập trình hằng ngày.
  • haiku: nhanh, cho việc đơn giản.
  • opusplan: dùng opus trong plan mode (chế độ lập kế hoạch), rồi tự chuyển sang sonnet khi viết và sửa mã.
  • sonnet[1m] và opus[1m]: yêu cầu cửa sổ ngữ cảnh (context window, lượng văn bản model xem được trong một lần) 1 triệu token. Hậu tố này không có tác dụng khi bí danh gốc đã trỏ tới model có sẵn cửa sổ 1 triệu token.
  • opusplan[1m]: yêu cầu cửa sổ 1 triệu token cho cả hai giai đoạn, ở những nơi chúng chưa có sẵn.

Tính đến ngày 9/10/2026, theo trang cấu hình model: default trỏ tới Opus 5.5 trên các gói Pro, Max, Team, Enterprise và trên Anthropic API, còn trên Microsoft Foundry là Sonnet 4.5. Trên Anthropic API, opus trỏ tới Opus 5.5, sonnet tới Sonnet 5.5, haiku tới Haiku 5.5 và fable tới Fable 5.1. Sonnet 5.5 và Opus 5.5 đều có sẵn cửa sổ 1 triệu token, nên sonnet[1m] và opus[1m] không thay đổi gì ở đó. Các bản Claude Code cũ trỏ tới model cũ hơn: trước v2.1.280, default trên Pro và Team Standard là Sonnet 5.

Đừng tin đoạn trên hơn tài khoản của chính bạn. Kiểm tra bằng /status như phần dưới. Nếu phiên bản Claude Code đã cũ, cập nhật bằng claude update.

Kiểm tra model đang dùng bằng /status

/status

/status mở giao diện Settings ở tab Status, nơi hiện phiên bản Claude Code, model, tài khoản và trạng thái kết nối. Model cũng hiện trên status line (dòng trạng thái) nếu bạn đã cấu hình một dòng. Chạy /status mỗi lần bạn đổi cấu hình, vì đó là cách nhanh nhất để biết lớp nào trong năm lớp ở trên đang thắng. Danh sách đầy đủ các lệnh gạch chéo nằm ở trang commands của tài liệu.

Model cho subagent: CLAUDE_CODE_SUBAGENT_MODEL

Subagent là tác tử phụ mà Claude Code giao một phần việc. Yêu cầu của subagent vẫn tính vào hạn mức của bạn, nên model của chúng cũng đáng để ý.

CLAUDE_CODE_SUBAGENT_MODEL đặt model mặc định cho subagent, cho thành viên agent team và cho workflow agent chưa được gán model theo cách khác. Biến nhận bí danh như haiku hoặc tên model đầy đủ. Thứ tự ưu tiên cho một subagent là: model chỉ định cho riêng lần gọi đó, rồi trường model trong định nghĩa subagent (kể cả giá trị inherit), rồi biến này, rồi model của cuộc hội thoại chính.

Vì vậy, biến này một mình thường chưa đủ. Subagent nào có trường model riêng vẫn chạy model đó. Muốn mọi subagent chạy Haiku, thêm CLAUDE_CODE_SUBAGENT_MODEL_FORCE (cần v2.1.257 trở lên) vào khối env của file settings. Ví dụ sau đặt Sonnet cho phiên chính và Haiku cho mọi subagent:

{
  "model": "sonnet",
  "env": {
    "CLAUDE_CODE_SUBAGENT_MODEL": "haiku",
    "CLAUDE_CODE_SUBAGENT_MODEL_FORCE": "1"
  }
}

Khi FORCE bật, trường model trong định nghĩa subagent bị bỏ qua. Để kiểm tra, chạy /tasks trong lúc một subagent đang làm việc. Dòng của subagent đó hiện model nó đang dùng. Nếu vẫn thấy model khác Haiku, kiểm tra file settings của dự án, vì nó có ưu tiên cao hơn settings người dùng.

Dùng model hợp lý để hạn mức Pro và Max kéo dài hơn

Gói Pro và Max có giới hạn phiên 5 giờ và giới hạn theo tuần. Hai giới hạn này dùng chung cho Claude và Claude Code, nên mọi việc bạn làm ở cả hai nơi đều trừ vào cùng một chỗ. Gói Max còn có một giới hạn tuần riêng cho Fable. Cách tính chi tiết nằm trong bài giới hạn sử dụng của Claude được tính thế nào.

Model là thứ bạn tự điều chỉnh được để dùng hạn mức chậm hơn. Tài liệu chi phí của Anthropic viết rằng Sonnet làm tốt phần lớn việc lập trình và tốn ít hơn Opus, nên để dành Opus cho quyết định kiến trúc phức tạp hoặc suy luận nhiều bước. Với subagent làm việc đơn giản, tài liệu khuyên dùng Haiku. Tài liệu không đưa ra con số tiết kiệm nào. Bạn sẽ gặp các con số phần trăm ở nơi khác, nhưng chúng không có trong tài liệu chính thức, nên bài này không đưa ra con số nào.

Bốn thiết lập thực tế, từ đơn giản đến chi tiết:

  • Đặt "model": "sonnet" làm mặc định. Khi gặp việc khó, mở /model, chọn Opus và nhấn s để chỉ dùng Opus cho phiên đó.
  • Nếu bạn hay dùng plan mode, đặt "model": "opusplan". Opus lập kế hoạch, Sonnet viết mã.
  • Cho mọi subagent chạy Haiku bằng khối env ở phần trên.
  • Không chọn fable hoặc best nếu việc không cần, vì trên một số gói chúng có thể trừ vào usage credits (xem phần dưới).

Muốn so sánh giá theo token của từng model, đọc so sánh Opus, Sonnet và Haiku để chọn model phù hợp. Muốn biết gói nào được dùng model nào, đọc gói Max được dùng những model nào. Nếu muốn hiểu vì sao một phiên dài tốn nhiều token hơn bạn nghĩ, xem cách Claude Code dùng token.

Đổi model có giúp làm tiếp khi đã chạm giới hạn không?

Thường là không. Giới hạn phiên và giới hạn tuần dùng chung cho mọi model, vì vậy khi bạn đã chạm một trong hai, đổi model không mở lại quyền truy cập. Ngoại lệ là giới hạn riêng của một họ model, ví dụ thông báo bạn đã chạm giới hạn Opus hoặc giới hạn Sonnet. Giới hạn kiểu này chỉ áp dụng cho yêu cầu tới họ model đó, nên dùng /model chuyển sang một model ngoài họ đó là bạn làm việc tiếp được.

Khi đã chạm giới hạn chung, Claude Code từ v2.1.234 có thể chờ tới lúc giới hạn đặt lại rồi tự làm tiếp việc đang dở. Lựa chọn này nằm trong /rate-limit-options. Các hướng xử lý khác có trong bài làm gì khi Claude báo đã hết giới hạn.

fallbackModel không cứu bạn khi hết hạn mức

fallbackModel trong settings, hoặc cờ --fallback-model, cho Claude Code chuyển sang model khác khi model chính bị quá tải, không khả dụng hoặc trả về một lỗi máy chủ khác không thử lại được.

{
  "fallbackModel": ["sonnet", "haiku"]
}
claude --fallback-model sonnet,haiku

Cờ dòng lệnh thắng giá trị trong settings. Một chuỗi dự phòng có tối đa ba model. Nhiều người hiểu nhầm rằng đây là cách vượt giới hạn sử dụng. Không phải. Tài liệu ghi rõ: lỗi xác thực, lỗi thanh toán, lỗi rate limit (giới hạn tần suất), lỗi kích thước yêu cầu và lỗi truyền tải không bao giờ kích hoạt việc chuyển model. Hết hạn mức không làm fallbackModel chạy. Ngược lại, lỗi quá tải 529 không phải giới hạn của bạn và không tính vào hạn mức. Lưu ý thêm: Claude Code không xác nhận chuỗi dự phòng lúc khởi động, và /status cũng không hiện nó.

Vì sao usage credits bị trừ sau khi chọn fable hoặc best?

Usage credits là khoản tín dụng cho phép bạn làm việc tiếp sau khi chạm giới hạn của gói. Fable không phải model mặc định trên gói nào. Bạn chỉ dùng nó khi tự chọn, bằng /model fable hoặc claude --model fable, hoặc khi chọn best ở nơi best trỏ tới Fable.

Tùy gói và loại seat, yêu cầu tới Fable có thể trừ vào usage credits thay vì vào hạn mức đi kèm gói. Khi đó bảng chọn /model hiện dòng chữ Requires usage credits ở dòng Fable. Trong phiên tương tác, Claude Code hỏi bạn đồng ý trước khi một yêu cầu Fable trừ credits. Sau khi bạn đồng ý, lời hỏi này không hiện lại. Chế độ -p (chạy một lệnh không tương tác) và ứng dụng Agent SDK không hiện lời hỏi, nên yêu cầu Fable ở đó trừ credits ngay. Nếu bạn có script chạy claude -p --model fable theo lịch, credits có thể giảm mà bạn không thấy lời hỏi nào.

Cách xử lý:

  1. Chạy /status để xem model đang dùng.
  2. Nếu đó là Fable, chuyển về bằng /model sonnet hoặc /model default.
  3. Tìm fable và best trong file settings, biến môi trường và các script dùng claude -p.
  4. Chạy /usage. Khi credits đang bật, lệnh này có thêm một dòng về usage credits.

Để quản lý credits, chạy /usage-credits sau khi đăng nhập bằng gói claude.ai qua /login. Trên Pro và Max, lệnh này mở trang Settings > Usage trên claude.ai. Lệnh không có khi bạn dùng API key. Cách credits được tính và nạp nằm trong bài usage credits của Claude hoạt động thế nào.

FAQ

Làm sao đổi model trong Claude Code mà không lưu thành mặc định?

Gõ /model không kèm tham số để mở bảng chọn, chọn model rồi nhấn phím s. Model chỉ đổi cho phiên hiện tại, mặc định giữ nguyên. Đừng gõ thẳng /model opus, vì lệnh gõ thẳng có tác dụng giống nhấn Enter và lưu model đó thành mặc định. Cách khác là mở phiên bằng claude --model opus, vì cờ --model không lưu gì.

Vì sao Claude Code vẫn mở bằng model cũ dù tôi đã đổi bằng /model?

Có hai nguyên nhân hay gặp. Thứ nhất, biến môi trường ANTHROPIC_MODEL đang được đặt, và khi biến này tồn tại, mỗi lần khởi động Claude Code đều dùng model của biến, bất kể bạn đã lưu gì bằng /model. Gỡ nó bằng unset ANTHROPIC_MODEL trên bash, hoặc [Environment]::SetEnvironmentVariable("ANTHROPIC_MODEL", $null, "User") trên PowerShell rồi mở terminal mới. Thứ hai, dự án có .claude/settings.json hoặc .claude/settings.local.json đặt model, và hai file này có ưu tiên cao hơn settings người dùng. Chạy /status để xem model thực sự đang dùng.

File settings.json của Claude Code nằm ở đâu trên Windows?

File settings người dùng là ~/.claude/settings.json, và trên Windows ~/.claude nghĩa là %USERPROFILE%\.claude. Vậy file nằm ở %USERPROFILE%\.claude\settings.json. Trên Linux và macOS là ~/.claude/settings.json. Nếu bạn đặt biến CLAUDE_CONFIG_DIR, file nằm trong thư mục đó. File là JSON nghiêm ngặt, không có chú thích và không có dấu phẩy thừa.

Đổi sang Sonnet hay Haiku có giúp tôi làm tiếp khi đã hết giới hạn Pro hoặc Max không?

Không, nếu đó là giới hạn phiên 5 giờ hoặc giới hạn tuần, vì hai giới hạn này dùng chung cho mọi model. Chỉ khi thông báo nói về giới hạn riêng của Opus hoặc của Sonnet, chuyển sang model ngoài họ đó bằng /model mới giúp bạn làm tiếp. fallbackModel cũng không giúp, vì lỗi rate limit và lỗi thanh toán không kích hoạt nó. Chọn Sonnet và Haiku từ trước chỉ giúp hạn mức được dùng chậm hơn.

Vì sao ANTHROPIC_DEFAULT_MODEL=haiku không có tác dụng?

Claude Code bỏ qua ANTHROPIC_DEFAULT_MODEL khi giá trị là default, inherit, opusplan hoặc haiku. Biến này cũng chỉ có tác dụng khi không có cờ --model, không có ANTHROPIC_MODEL và không có trường model trong file settings nào, kể cả lựa chọn đã lưu bằng /model. Để mặc định là Haiku, ghi "model": "haiku" vào ~/.claude/settings.json. Để subagent chạy Haiku, dùng CLAUDE_CODE_SUBAGENT_MODEL.