Claude Code chỉ giữ một phiên đăng nhập tại một thời điểm. Đây là cách chạy nhiều tài khoản cùng lúc.

Hướng dẫn thực chiến để chạy một tài khoản công việc và một tài khoản cá nhân trên cùng một máy: biến môi trường duy nhất quyết định phiên đăng nhập nào đang hoạt động, vì sao cách làm qua shell sụp đổ khi bạn mở quá hai terminal, và cách gán cố định một tài khoản cho từng dự án.

Có một khoảnh khắc xảy ra với hầu hết những người dùng Claude Code vừa cho công việc vừa cho dự án riêng của mình. Bạn kết thúc một phiên làm việc, chuyển sang một dự án phụ, rồi nhận ra agent vẫn đang đăng nhập bằng tài khoản mà công ty của bạn trả tiền. Thế là bạn đăng xuất, đăng nhập lại bằng tài khoản của mình, và nửa tiếng sau bạn phải làm đúng chiều ngược lại.

Vòng lặp đó không phải là một tính năng còn thiếu. Nó là hệ quả của việc Claude Code cất phiên đăng nhập ở đâu, và một khi bạn biết chỗ đó nằm ở đâu, việc chạy nhiều tài khoản cạnh nhau trở thành một chi tiết cấu hình chứ không còn là vấn đề quy trình làm việc.

Một biến môi trường duy nhất quyết định tài khoản nào đang hoạt động

Claude Code không giữ thông tin đăng nhập trong một cơ sở dữ liệu hay một mục keyring được đánh khóa theo hồ sơ. Nó đọc mọi thứ nó cần từ một thư mục duy nhất: thông tin đăng nhập, siêu dữ liệu phiên và lịch sử theo từng dự án.

Thư mục đó là bất cứ nơi nào CLAUDE_CONFIG_DIR trỏ tới. Nếu bạn không bao giờ đặt biến này, đó là ~/.claude.

Sơ đồ mô tả cách Claude Code xác định tài khoản của nó: biến môi trường CLAUDE_CONFIG_DIR trỏ tới một thư mục duy nhất chứa credentials.json, siêu dữ liệu phiên và lịch sử dự án, mặc định quay về ~/.claude khi biến này không được đặt.

Đây là toàn bộ cơ chế, và nó có một đặc tính hữu ích: vì một tài khoản là một thư mục chứ không phải một thiết lập toàn cục, có hai tài khoản đồng nghĩa với có hai thư mục. Không có gì được chia sẻ giữa chúng. Cả hai vẫn ở trạng thái đã đăng nhập vô thời hạn, và không cái nào biết cái kia tồn tại.

Vậy nên phiên bản ngây thơ vẫn chạy được:

# cá nhân
CLAUDE_CONFIG_DIR=~/.claude claude

# công việc
CLAUDE_CONFIG_DIR=~/.claude-work claude

Chạy /login một lần bên trong thư mục thứ hai, và bạn có hai tài khoản đang hoạt động trên một máy.

Nơi cách tiếp cận bằng shell bắt đầu gây khó chịu

Phiên bản hai dòng ở trên thật sự ổn nếu bạn chỉ mở một terminal tại một thời điểm và bạn đủ kỷ luật. Nó thôi ổn vì ba lý do, và chúng cộng dồn lên nhau.

Biến này áp dụng theo tiến trình, không phải theo máy. Mỗi terminal mới, mỗi pane mới, mỗi shell tích hợp trong trình soạn thảo đều khởi động từ giá trị mặc định trong hồ sơ của bạn. Export nó trong .zshrc và bạn chỉ đơn giản là dời vấn đề đi chỗ khác: giờ thì tài khoản kia mới là cái bạn liên tục quên.

Không có gì cho bạn biết tài khoản nào đang hoạt động. Claude Code không in tên tài khoản trong dấu nhắc của nó. Nếu bạn mở hai terminal và một trong hai đang dùng tài khoản công việc, chúng trông y hệt nhau. Khoảnh khắc bạn nhận ra thường là khoảnh khắc bạn đi kiểm tra hóa đơn.

Nó không sống sót qua tính song song. Những thiết lập thú vị đều chạy nhiều agent cùng lúc, trên nhiều dự án. Một khi bạn vượt quá hai phiên đồng thời, việc nhớ pane nào được khởi chạy với biến nào không còn là vấn đề kỷ luật nữa, nó là vấn đề thiết kế.

Sơ đồ so sánh: bên trái là cách chọn tài khoản Claude Code bằng việc export CLAUDE_CONFIG_DIR trong từng terminal, nơi một terminal thứ ba không cho thấy bất kỳ dấu hiệu nào về tài khoản đang hoạt động. Bên phải là tài khoản được gắn với dự án, kèm một ghi đè theo từng agent, được xác định tự động khi agent khởi chạy.

Cách sửa không phải là thêm shell. Cách sửa là ngừng đưa ra quyết định vào lúc khởi chạy và bắt đầu gắn tài khoản vào thứ thực sự quyết định nó: dự án.

Gắn tài khoản vào dự án, không phải vào terminal

Thứ bạn thường muốn là một quy tắc, không phải một câu lệnh. Đại loại như: kho mã của khách hàng này luôn chạy trên tài khoản của khách hàng đó. Một khi quy tắc ấy tồn tại, không ai phải nhớ gì nữa.

Làm điều đó cho tử tế nghĩa là xác định tài khoản theo một thứ tự đã định, vì quy tắc nào cũng cần ngoại lệ. Một mặc định áp cho toàn dự án là đúng trong phần lớn trường hợp, nhưng một agent cụ thể có thể cần chạy ở nơi khác: một thử nghiệm dùng một lần trên tài khoản thử, hoặc một agent review code trên một suất có hạn mức lớn hơn.

Sơ đồ về thứ tự xác định tài khoản gồm bốn cấp: ghi đè ở cấp agent thắng việc gán cố định ở cấp dự án, việc gán cố định này thắng mặc định của ứng dụng, và mặc định của ứng dụng quay về thư mục mặc định của hệ thống ~/.claude.

Đọc từ trên xuống, quy tắc khớp đầu tiên sẽ thắng. Ghi đè ở cấp agent thắng việc gán cố định của dự án. Việc gán cố định của dự án thắng bất cứ giá trị nào bạn đặt làm mặc định chung. Nếu không có gì được cấu hình ở đâu cả, bạn rơi về ~/.claude, đúng bằng những gì một bản cài đặt mới đã làm sẵn. Bước dự phòng cuối cùng đó rất quan trọng: nó có nghĩa là thêm cơ chế này vào một thiết lập sẵn có sẽ không thay đổi gì cho tới khi bạn gán cố định một thứ gì đó một cách rõ ràng.

Đây là mô hình mà AgentsRoom triển khai. Mỗi tài khoản là một thư mục được quản lý, việc đăng nhập diễn ra bên trong ứng dụng thay vì trong một shell, và cơ chế xác định ở trên chạy khi một agent được khởi tạo, chỉ đặt CLAUDE_CONFIG_DIR trên đúng tiến trình đó. Nếu bạn đã dùng một công cụ chuyển tài khoản của bên thứ ba như CCS, bạn có thể trỏ một tài khoản tới thư mục hồ sơ sẵn có thay vì đăng nhập lại từ đầu.

Vấn đề tương tự cũng tồn tại trên Codex, với một biến khác

Nếu bạn chạy nhiều hơn một nhà cung cấp, bạn sẽ vấp phải chuyện này hai lần. Hình dạng của vấn đề thì y hệt còn tên biến thì không, nên một công cụ chuyển tài khoản được xây cho bên này không bao được bên kia. Chúng tôi ghi tài liệu riêng cho phía Codex tại đa tài khoản cho Codex, bao gồm cả những khác biệt trong luồng đăng nhập.

Điểm chung đáng nói một lần: cô lập tài khoản là một cơ chế theo từng nhà cung cấp. Bất kỳ công cụ nào tuyên bố xử lý được chuyện đó một cách toàn cục thì hoặc là đang bọc riêng từng nhà cung cấp, hoặc là chỉ hỗ trợ đúng một cái.

Biết tài khoản nào thực sự đang đốt token

Tách các tài khoản mới chỉ là một nửa lý do người ta làm việc này. Nửa còn lại là biết mức tiêu thụ rơi vào đâu, nhất là khi có một khách hàng đang trả tiền.

Đây chính là phần âm thầm hỏng khi dùng cách làm qua shell. Những công cụ đọc mức sử dụng chỉ nhìn vào ~/.claude sẽ báo thiếu ngay khi một agent chạy ở chỗ khác, và các con số trông đủ hợp lý để hàng tuần liền không ai nhận ra. Một công cụ đọc có nhận biết tài khoản buộc phải duyệt qua mọi thư mục đã cấu hình, chứ không chỉ thư mục mặc định.

Nếu bạn muốn các con số theo từng tài khoản và từng phiên, chúng tôi đã nói về phần đo đạc trong cách kiểm tra mức sử dụng token Claude Code, còn chế độ xem trực tiếp thì nằm ở trang mức sử dụng token.

Điều này không dùng để làm gì

Một điểm cần làm rõ, vì câu hỏi này vẫn được đặt ra và nó xứng đáng nhận một câu trả lời thẳng thắn thay vì sự im lặng.

Mọi thứ ở trên là về việc tách các tài khoản vốn đã tồn tại một cách hợp pháp. Một suất do công ty của bạn trả tiền và một gói đăng ký cá nhân do chính bạn trả tiền là hai mối quan hệ thương mại khác nhau, và giữ chúng trên cùng một máy mà không lẫn lộn vào nhau là một nhu cầu có thật, hết sức bình thường. Việc tính token của một khách hàng cho chính khách hàng đó cũng vậy, và việc giữ một tài khoản thử nghiệm tránh xa tài khoản chạy thật cũng vậy.

Tạo thêm tài khoản để lách giới hạn dung lượng của gói mà bạn đang dùng lại là chuyện hoàn toàn khác, và đó chính là cái mà các chính sách sử dụng nhắm tới. Cơ chế mô tả ở đây không làm cho điều đó trở nên chấp nhận được, và một công cụ tự động hóa việc đó sẽ là đang giúp bạn vi phạm một thỏa thuận mà chính bạn đã ký. Nếu tài khoản thứ hai của bạn tồn tại vì người khác trả tiền cho nó, bạn hoàn toàn yên tâm. Nếu nó tồn tại để đặt lại giới hạn tốc độ, thì không. Các chính sách sử dụng của Anthropic mới là căn cứ, không phải bài viết này.

Những câu hỏi người dùng thực sự đặt ra

Tôi có thể dùng hai tài khoản Claude Code trên cùng một máy tính không?

Có. Claude Code đọc thông tin đăng nhập, siêu dữ liệu phiên và lịch sử dự án từ thư mục mà CLAUDE_CONFIG_DIR trỏ tới, mặc định là ~/.claude. Hãy trỏ biến đó sang một thư mục thứ hai rồi đăng nhập ở đó, bạn sẽ có hai tài khoản độc lập trên cùng một máy. Không có gì được chia sẻ giữa hai thư mục, nên cả hai luôn ở trạng thái đã đăng nhập cùng lúc.

Làm thế nào để chuyển tài khoản Claude Code mà không cần đăng xuất?

Bạn không cần đăng xuất chút nào. Đăng xuất rồi đăng nhập lại vẫn dùng đúng thư mục cũ, nên bạn mất phiên thứ nhất để có được phiên thứ hai. Thay vào đó, hãy cho mỗi tài khoản một thư mục cấu hình riêng và chọn giữa chúng bằng cách đặt CLAUDE_CONFIG_DIR khi bạn khởi chạy CLI. Cả hai thông tin đăng nhập vẫn còn hiệu lực trên đĩa, và việc chuyển đổi không tốn gì cả.

Claude Code lưu thông tin đăng nhập ở đâu?

Trong thư mục mà CLAUDE_CONFIG_DIR trỏ tới, tức là ~/.claude nếu bạn không thay đổi gì. Bản thân thông tin đăng nhập nằm trong tệp .credentials.json bên trong thư mục đó, ngay cạnh siêu dữ liệu phiên và lịch sử theo từng dự án. Chỉ riêng thư mục đó đã là toàn bộ tài khoản, và chính điều này khiến việc hoán đổi nó trở thành một cách chuyển tài khoản gọn gàng chứ không phải một mẹo vặt.

Hai agent có thể chạy trên hai tài khoản Claude khác nhau cùng một lúc không?

Có, miễn là mỗi tiến trình agent nhận được CLAUDE_CONFIG_DIR riêng trong môi trường của nó. Biến này được đọc theo từng tiến trình lúc khởi chạy chứ không phải ở phạm vi toàn cục, nên hai agent được khởi chạy với hai giá trị khác nhau sẽ chạy song song trên hai tài khoản khác nhau. Đây chính là điều làm cho một dự án công việc và một dự án cá nhân dùng được trong cùng một cửa sổ.

Việc có nhiều hơn một tài khoản Claude có vi phạm điều khoản của Anthropic không?

Giữ các tài khoản riêng cho các mục đích riêng là chuyện bình thường: một suất do công ty của bạn trả tiền và một gói đăng ký cá nhân do chính bạn trả tiền là hai mối quan hệ thương mại khác nhau. Cái mà các chính sách sử dụng nhắm tới là việc tạo tài khoản để lách giới hạn dung lượng của gói mà bạn đang dùng. Nếu tài khoản thứ hai của bạn tồn tại vì người khác trả tiền cho nó, bạn hoàn toàn yên tâm. Nếu nó tồn tại để đặt lại giới hạn tốc độ, thì không. Các chính sách sử dụng của Anthropic mới là căn cứ.

Phiên bản ngắn gọn

Claude Code lưu một tài khoản dưới dạng một thư mục, và CLAUDE_CONFIG_DIR quyết định thư mục nào đang hoạt động. Hai thư mục nghĩa là hai tài khoản, luôn ở trạng thái đã đăng nhập, không chia sẻ gì với nhau.

Phiên bản dùng shell chạy được cho tới khi bạn mở nhiều hơn một terminal. Sau đó, thứ bạn muốn là tài khoản trở thành một thuộc tính của dự án, kèm một ghi đè theo từng agent cho các ngoại lệ, để đúng thông tin đăng nhập được gắn vào lúc khởi tạo và không ai phải nhớ gì cả.

Tải AgentsRoom

Chạy các agent AI của bạn (Claude, Codex, Antigravity CLI, OpenCode, Aider, Grok Build, Mistral Vibe, Kimi Code) trên tất cả dự án, trong một cửa sổ duy nhất.

Miễn phíTải AgentsRoom

Ứng dụng đồng hành: theo dõi agent khi đi đường

Sử dụng Claude, Codex, Antigravity CLI hoặc nhà cung cấp AI khác.

Tải tiện ích mở rộng
Chrome Web Store

Gửi lỗi và yêu cầu thẳng vào backlog công khai của bạn.

Một cái nhìn về AgentsRoom đang hoạt động.

Nhiều dự án
Đa nhà cung cấp
Nhiều agent
Trạng thái trực tiếp
File diff & commit
Ứng dụng đồng hành mobile
Xem trước trực tiếp
Đội agent
Tự động hóa trình duyệt
Dev theo backlog
Thư viện prompt
Thư viện skill
Xem tất cả tính năng

Đọc thêm