2.4 KiB
CASAN Prompt Enforcement
CASAN thực thi governance qua integration native của từng client và một Core
runtime đã pin theo project. Không dùng bin/casan-chat làm entrypoint bắt buộc
cho project adoption mới.
Luồng production
- Developer gửi prompt trong client đã được project enable.
- Hook project gọi
.casan/casan-hook.py. - Bootstrap đọc
.casan/config.jsonvà.casan/version.lock. - Core runtime được resolve theo mode
managedhoặcvendored. - Live hash phải khớp project pin trước khi adapter/gate được dispatch.
- Trace/evidence được ghi vào
.specifycủa đúng project.
Runtime mode
Managed Core, khuyến nghị mặc định:
casan init --project my-project --client claude,codex
Core nằm trong $CASAN_HOME, còn project commit config/lock/bootstrap/hooks.
Vendored Core cho offline/air-gapped:
casan init --runtime vendored --project my-project --client claude,codex
Core production-only nằm tại .casan/runtime/casan-core. Nếu folder này bị
thiếu hoặc sai hash, CASAN fail closed; không fallback âm thầm sang global Core.
Boundary theo client
Claude Code
CASAN merge handler vào .claude/settings.json. Hook khác, agent, skill và key
không thuộc CASAN được giữ nguyên.
Codex
CASAN merge handler vào .codex/hooks.json. Người dùng phải mở /hooks, review
và trust đúng hook hash của project.
VS Code / GitHub Copilot
Route được chứng nhận là explicit @casan. CASAN không quảng bá rằng built-in
Copilot Chat hoặc mọi prompt bên ngoài route này đều được intercept.
Ngoài project
Prompt gửi trực tiếp vào website AI bên ngoài project/runtime không nằm trong boundary chứng nhận của CASAN. Kiểm soát website/proxy/identity ở cấp tổ chức là lớp bổ sung, không phải chức năng của repository hook.
Kiểm tra
casan doctor
casan verify-harness
casan level show
CI phải verify runtime pin trước gate:
casan verify-harness
casan gate
Chỉ coi output là certified khi runtime integrity hợp lệ và trace H1–H7 tương ứng vượt qua policy.
Gỡ integration
casan uninstall
Lệnh xóa CASAN hook/config và vendored Core nếu có, nhưng giữ hook/workflow/file
project. Dùng --purge để xóa thêm .specify logs/state.