Giới thiệu
Coop là Rust CLI của Trail of Bits để chạy Claude Code và Codex trong virtual machine tách khỏi host. Agent vẫn có Docker, git, compiler, package manager và quyền thao tác rộng bên trong guest, trong khi workspace được đặt trong môi trường có thể tạo lại hoặc bỏ đi.
Công cụ dùng Firecracker microVM trên Linux và Lima VM trên macOS. Bản phát hành được test trên macOS arm64 và Linux x86_64; Linux arm64 có binary nhưng chưa được test đầy đủ.
Tính năng chính
- Tạo instance riêng cho một project và mở agent CLI trong guest.
- Cung cấp toolchain đầy đủ thay vì sandbox chỉ cho phép một danh sách command nhỏ.
- Hỗ trợ môi trường có thể tái tạo, dừng, khởi động lại và thay disk khi cần.
- Cho phép kết nối editor tới guest qua SSH theo tài liệu của dự án.
- Có tài liệu riêng về workspace sync, image/profile, backend, cấu hình và trust model.
Mục tiêu thiết kế là thu nhỏ blast radius trên host khi coding agent chạy command không đáng tin hoặc cài dependency. Đây là isolation boundary cho môi trường thực thi, không phải lý do để cấp credential rộng hơn nhu cầu.
Cài đặt
Cài bản phát hành mới nhất bằng installer của dự án:
curl -fsSL https://raw.githubusercontent.com/trailofbits/coop/main/install.sh | bash
Hoặc build từ source khi đã có Rust:
cargo build --release
cp target/release/coop /usr/local/bin/
Sau đó tạo template image:
coop setup
Trên Linux, bước setup cài Firecracker và tải guest kernel. Trên macOS, cần cài Lima trước:
brew install lima
Để cập nhật CLI, dùng:
coop update
Cách sử dụng
Trong project hiện tại, tạo hoặc khởi động instance rồi mở agent:
cd ~/code/my-project
coop up
coop claude
# hoặc
coop codex
Agent làm việc trong guest thay vì trực tiếp trên host. Trước khi dùng cho repository thật, nên đọc phần prerequisite của backend, cơ chế workspace sync và tài liệu trust model để biết dữ liệu nào đi qua host–guest boundary.
Cách dùng an toàn
Giữ credential theo phạm vi
VM cô lập filesystem và process tốt hơn một shell chạy thẳng trên máy cá nhân, nhưng credential được đưa vào guest vẫn có thể được process bên trong sử dụng. Chỉ truyền token cần thiết, giới hạn repository/quyền, đặt thời hạn ngắn khi có thể và tránh đưa secret không liên quan vào instance.
Xác định dữ liệu cần giữ
Môi trường disposable hữu ích khi dependency, build artifact và tool do agent tạo ra không cần tồn tại lâu. Với source code hoặc output cần giữ, hãy hiểu rõ cơ chế sync trước khi restore hoặc thay image. Đừng coi disk guest là bản sao lưu duy nhất.
Kiểm tra yêu cầu của backend
Firecracker và Lima có mô hình networking, mount và kernel khác nhau. Một workflow chạy trên macOS chưa chắc có cùng chi tiết vận hành trên Linux. Hãy test port forwarding, Docker, file permissions và performance trên đúng nền tảng của nhóm.
Khi nào Coop phù hợp
Coop hữu ích khi muốn cho coding agent quyền cài package, chạy compiler hoặc Docker mà không mở toàn bộ host. Nó đặc biệt hợp với thử nghiệm dependency lạ, repository chưa tin cậy và task tự động dài.
Đổi lại, nhóm phải vận hành VM image, hiểu workspace lifecycle và quản lý credential boundary. Nếu task chỉ cần read-only hoặc vài command cố định, một sandbox nhỏ hơn có thể đơn giản hơn. Với agent cần tool access rộng, disposable VM là một ranh giới đáng cân nhắc—miễn là isolation được ghép với credential tối thiểu và quy trình review output.