Agent và quyền
Agent trong ALP là một role có definition, không phải một model process tự do. Definition trả lời role là ai, được dùng gì, đọc/ghi ở đâu, delegate cho ai và phải kết thúc theo workflow nào.
Built-in roles
Phần tiêu đề “Built-in roles”| Role | Trách nhiệm |
|---|---|
main |
Coordinator làm việc trực tiếp với principal: brainstorm, cắt việc, kiểm chứng kết quả trả về |
worker |
Thực thi một task đã được main giao, từ đầu tới hết |
search |
Tìm code và call site trong local repository |
librarian |
Nghiên cứu nguồn ngoài hoặc cross-repo |
read-thread |
Truy xuất quyết định và fact trong memory |
review |
Review code theo một concern có bằng chứng |
oracle |
Second opinion sâu cho quyết định khó |
compaction |
Tóm tắt context theo contract |
titling |
Sinh title ngắn |
main có thể delegate tới các role trên. Specialist không tự có quyền delegate chỉ vì đang làm thay main; quan hệ phải tồn tại trong definition.
main không ghi được vào workspace: nó không cầm Write/Edit và không khai write root nào. Mọi thay đổi file đi qua worker — vai duy nhất khai writeRoots: ["."]. Đây là một ranh giới kiểm được ở lớp policy, không phải một câu trong prompt: một main cố ghi bị PolicyEngine từ chối với WORKSPACE_NOT_GRANTED, và alp hạ luôn phiên main xuống read-only kể cả trong project đã đăng ký.
Vì sao main không commit
Phần tiêu đề “Vì sao main không commit”Read-only của main phủ cả .git: git commit từ phiên main trả fatal: Unable to create '.git/index.lock': Operation not permitted, và đó là chủ ý, không phải sandbox hỏng. Principal duyệt commit không đổi cái ghế này ghi được gì — nó đổi ai được nhờ ghi. Đường đi là main giao worker một task riêng: nêu rõ principal đã duyệt, nhánh, file cần stage, message chính xác, có push hay không; worker commit, báo hash; main đọc alp delegation evidence thấy item change mang commit đó rồi mới báo lại principal. Xem thêm Giao việc.
Sáu nhóm capability
Phần tiêu đề “Sáu nhóm capability”- Tools: tên tool role được gọi.
- Skills: workflow/instruction package role được nạp.
- Memory: logical scope role được đọc hoặc ghi.
- Workspace: root được đọc/ghi và execution mode thực tế.
- Delegation/subagent/MCP: capability phải vừa được khai vừa tồn tại trong catalog.
- Workflow: tool còn phải được phép tại state hiện tại.
Write grant luôn phải nằm trong read grant tương ứng. Tên capability không tồn tại bị từ chối thay vì bỏ qua.
Runtime nào cưỡng chế phần nào
Phần tiêu đề “Runtime nào cưỡng chế phần nào”Grant được chốt như nhau ở lớp ALP, nhưng hai runtime không giữ được cùng một lượng. Đây là giới hạn của Codex, không phải lỗi cấu hình.
| Phần của bảng Authority | Claude Code | Codex CLI |
|---|---|---|
| Tool grant | ACL thật — tool ngoài grant bị từ chối lúc gọi | Không cưỡng chế được: shell là built-in, vai không có Bash vẫn chạy được lệnh |
| Read root và private memory | ACL thật — đọc ngoài root bị từ chối | Không cưỡng chế được: sandbox read-only cho đọc mọi path |
| Ghi ngoài write root | ACL thật | Sandbox từ chối |
| Egress mạng | Không có tool mạng | Sandbox từ chối |
Đo ngày 2026-09-10 trên alp-code, không suy từ tài liệu: một vai chỉ có Read, Glob, Grep, Skill đã chạy /bin/zsh -lc "… node -e …" trên Codex và thành công.
Nghĩa là trên Codex, tool grant và read root là ràng buộc mức prompt; ghi và egress thì sandbox giữ thật. Từ tier 2, alp agent test và alp agent add in khối Enforced by ngay dưới bảng Authority để nói đúng phần nào được runtime nào cưỡng chế:
Enforced by - claude: the tool grant, the skill names and the read roots are ACL rules the runtime refuses at call time - codex: the shell is built in and cannot be withheld — this role holds no `Bash`, and a command can still run - codex: the read-only sandbox permits reading any path, so `workspace.readRoots` is instruction-level here - codex: writes outside the writable roots and network egress are refused by the sandboxKhối này mô tả đúng policy đang xét, không phải cảnh báo chung: vai đã có Bash thì không bị nhắc “vẫn chạy lệnh được”, vai memory-only thì nói về ranh giới của chính nó thay vì readRoots.
Khi giao việc nhạy cảm, hãy đọc mapping mode → runtime trước để biết vai đó chạy ở phía nào.
Memory không kế thừa theo cấp bậc
Phần tiêu đề “Memory không kế thừa theo cấp bậc”shareddành cho fact mọi role cần biết.project:*dành cho context của project.private:<role>chỉ role sở hữu đọc được.
Coordinator không được cấp quyền đọc private memory của specialist chỉ vì specialist báo cáo về coordinator. Kết quả cần chia sẻ phải được specialist trả qua output hoặc ghi vào scope được cấp.
Trên Claude, ranh giới này là ACL thật. Trên Codex nó là ràng buộc mức prompt vì sandbox read-only cho đọc mọi path — xem runtime nào cưỡng chế phần nào.
Workspace của phiên main
Phần tiêu đề “Workspace của phiên main”Phiên main luôn read-only, kể cả trong project đã alp init — vai này không khai write root nào nên alp không xin workspace-write cho nó. Đăng ký project là trần cho con: worker chỉ nhận workspace-write trong project đã đăng ký; cwd lạ thì mọi execution đều read-only. Delegated role còn bị giới hạn bởi workspace mode và roots của chính execution đó.
Kiểm agent trước khi chạy
Phần tiêu đề “Kiểm agent trước khi chạy”alp agent show reviewalp agent test reviewagent test chạy tối đa ba tầng, không gọi model:
- Tier 1: static definition, grants, skill roots và model/runtime mapping.
- Tier 2: dry-run preparation, authority, enforced by, egress, cost và launch spec.
- Tier 3: các deny path phải trả đúng policy error.
Exit code 0 nghĩa là sạch; 1 nghĩa là có finding cần xử lý.
Tiếp theo: Thiết lập project hoặc Custom agent.