Anthropic vừa mở public beta cho self-hosted environments trong Claude Code, dành cho gói Team và Enterprise. Ý tưởng khá đơn giản: thay vì session Claude Code chạy trên compute do Anthropic quản lý, chúng chạy trên hạ tầng do bạn kiểm soát — với quyền truy cập mạng nội bộ, private registry, database của bạn.
Tôi đọc thông báo này theo cách tôi đọc mọi pitch “chạy trên hạ tầng riêng của bạn” từ vendor: như hai tuyên bố riêng biệt bị gộp vào một câu marketing. Một tuyên bố nói về compute chạy ở đâu. Tuyên bố kia nói về dữ liệu đi đâu. Vendor rất thích khi bạn nhập nhằng hai điều này, vì tuyên bố thứ hai thường mới là điều bạn thực sự quan tâm — và đó là điều không đứng vững ở đây.
Bạn thực sự được gì
Self-host Claude Code mang lại ba thứ thật:
- Khả năng vươn tới mạng nội bộ. Session chạy trong VPC của bạn, có thể chạm tới service nội bộ, database staging, private package registry mà không cần mở lỗ firewall hay phơi bày gì ra internet công cộng.
- Tooling cài sẵn. Bạn kiểm soát runner image — compiler, SDK, CLI nội bộ, bất cứ gì build cần — nên mỗi session bắt đầu đã sẵn sàng thay vì tốn lượt cài dependency.
- Artifact ở lại nội bộ. Repo checkout và build output ở lại trên hạ tầng bạn sở hữu, thay vì đi qua storage do Anthropic quản lý.
Với team đang bị chặn bởi “agent không thể chạm tới Jira/Confluence/hệ thống build nội bộ của chúng ta”, riêng điều này đã đáng công setup. Tôi từng gặp session Claude Code bị đứng đúng vì lý do này — không có route tới artifact repo nội bộ, nên mọi lần cài dependency đều rơi về public mirror không có package private của công ty.
Bạn không được gì
Đây là phần quan trọng hơn những gì bài thông báo nhấn mạnh: prompt, phản hồi model, kết quả tool call, và toàn bộ transcript session vẫn đi tới Anthropic để inference, và Anthropic vẫn lưu giữ các transcript đó. Self-host chỉ dịch chuyển môi trường thực thi, không phải đường đi của dữ liệu. Model vẫn nằm trên cloud của Anthropic — bắt buộc phải vậy, vì đó là nơi chứa weights — nên mọi tin nhắn bạn gửi, mọi nội dung file bạn dán vào context vẫn đi cùng hành trình như trước.
Manh mối nằm trong phần chú thích nhỏ: self-hosted environments không khả dụng cho tổ chức dùng Zero Data Retention (ZDR). Nếu self-host thực sự giữ dữ liệu ở lại nội bộ, khách hàng ZDR phải là nhóm đầu tiên được cấp tính năng này, chứ không phải nhóm bị loại trừ. Việc loại trừ này xác nhận đúng những gì kiến trúc ngầm nói lên — đây là tính năng cô lập mạng và tooling, không phải cô lập dữ liệu.
Nếu yêu cầu compliance của bạn là “code không bao giờ vượt ranh giới mạng của chúng ta”, self-hosted Claude Code không đáp ứng được. Nếu yêu cầu là “agent chỉ được chạm tới hệ thống chúng ta cho phép rõ ràng, và không thể bị lợi dụng để exfiltrate qua kết nối internet mở”, thì có.
Playbook triển khai
Nếu bạn đang đánh giá tính năng này cho công ty, đây là trình tự tôi sẽ chạy:
1. Xác định rõ yêu cầu thật trước. Ngồi lại với đội security/compliance và viết ra, trong một câu, “self-hosted” cần nghĩa là gì với công ty bạn. Cô lập mạng? Data residency? Audit trail? Đây là những chủ sở hữu và tính năng khác nhau. Đừng để cách vendor đặt tên quyết định thay yêu cầu của bạn.
2. Bật theo phạm vi hẹp, không bật toàn tổ chức. Tính năng này mặc định tắt — Owner hoặc admin phải bật “Allow self-hosted environments” trên trang admin Cloud environments, và yêu cầu Claude Code on the web đã được bật trước. Bắt đầu với một team, một nhóm repo (ví dụ: tooling nội bộ, không đụng dữ liệu bị quản lý), rồi quan sát thực sự cái gì đi qua đường truyền.
3. Build runner image như build CI image. Cài sẵn compiler toolchain, CLI nội bộ, và mọi auth helper mà build cần. Đối xử với nó như hạ tầng có versioning — Dockerfile trong repo, rebuild theo lịch, không phải VM đặc biệt ai đó SSH vào chỉnh tay một lần.
FROM ubuntu:24.04
RUN apt-get update && apt-get install -y \
build-essential curl git \
internal-cli-tools # private apt mirror của bạn
COPY .netrc /root/.netrc # token đọc có phạm vi hẹp cho registry nội bộ
ENV CLAUDE_CODE_RUNNER=self-hosted
4. Đi qua Compliance API nếu bạn dùng Enterprise. Phạm vi bao phủ giờ đã mở rộng tới Claude Code trong CLI và desktop app (beta, chỉ Enterprise), nghĩa là đội security có thể lấy nội dung session và metadata theo cách lập trình thay vì tin vào screenshot. Setup cái này trước khi mở rộng quy mô sử dụng, đừng đợi tới khi có sự cố mới ước gì đã làm.
5. Chọn fixed hay on-demand runner dựa trên chi phí, không phải nỗi sợ. Fixed runner luôn sẵn sàng “nóng”; on-demand khởi động theo từng session và rẻ hơn khi idle. Với usage rời rạc (vài dev, thỉnh thoảng chạy session), on-demand thắng. Với team chạy session agent phần lớn thời gian làm việc, fixed runner khấu hao tốt hơn — độ trễ khởi động của on-demand cộng dồn rất nhanh khi ai đó đang iterate liên tục.
Kết luận
Đây là tính năng thực sự hữu ích cho bài toán hẹp nó giải quyết — đưa agent vào mạng của bạn để nó thực sự hữu dụng với hệ thống thật — và là một “phi giải pháp” cho bài toán tin cậy rộng hơn mà nhiều người sẽ mặc định nó giải quyết. Khi ai đó trong team nói “giờ ổn rồi, đã self-hosted mà”, hãy hỏi họ chỉ ra chính xác yêu cầu compliance nào nó đáp ứng. Một nửa số lần câu trả lời thật thà sẽ là “quyền truy cập mạng” — và đó là câu trả lời ổn, miễn là đúng thứ bạn thực sự cần.