Một agent workstation không cần quá phức tạp. Nhưng nó cần ranh giới. Nếu bạn cho agent chạy trên laptop chính, trong home directory chính, với SSH keys, cloud credentials, repo thật, browser profile thật, thì bạn đang thử nghiệm trên môi trường có quá nhiều thứ để mất.

Bài này là checklist hardening trước khi dùng OpenClaw, Hermes, Codex, Cursor, local LLM agent, hoặc bất kỳ tool nào có thể đọc file, viết file, chạy command, gọi network.

Mục tiêu không phải “secure tuyệt đối”. Mục tiêu là giảm blast radius để khi agent làm sai, bạn mất một lab repo, không mất máy làm việc.

Bắt đầu bằng throwaway repo

Repo đầu tiên nên là throwaway:

mkdir -p ~/agent-labs/throwaway-mini-app
cd ~/agent-labs/throwaway-mini-app
git init
printf '# Throwaway mini app\n' > README.md
git add README.md
git commit -m "chore(lab): init throwaway repo"

Không dùng repo có:

  • customer data;
  • production config;
  • deploy key;
  • .env thật;
  • database dump;
  • private docs;
  • credential history.

Nếu agent không làm đúng trong throwaway repo, nó chưa được quyền vào repo thật.

Secrets để ngoài workspace

Trong repo lab, nếu cần config local, dùng .local/ và đảm bảo gitignored:

.local/
  README.md
  provider/
    README.md

.local/README.md nên nói rõ thư mục này chứa gì và không commit:

# Local-only config

This folder is gitignored. Store local credentials and temporary runtime files here.
Do not paste secrets into chat prompts.

Nếu bạn phải di chuyển credential từ vị trí cũ vào .local/, để lại breadcrumb file như CREDENTIALS-MOVED.md ở vị trí cũ, chỉ ghi hướng dẫn, không ghi secret.

Không paste API key vào prompt. Không gửi .env vào chat. Không để agent tự đọc toàn bộ home directory “để tìm config”.

Tách personal data khỏi coding workspace

Agent coding không cần thấy:

  • ~/Downloads;
  • browser profile;
  • password manager export;
  • personal photo/docs;
  • SSH keys;
  • cloud provider credentials;
  • toàn bộ ~/.config.

Nếu chạy trên VPS, tạo user riêng:

sudo adduser agentlab

Nếu chạy local, ít nhất tạo folder riêng và chỉ allow tool access vào folder đó. Tool nào hỗ trợ path allowlist thì dùng allowlist. Tool nào chỉ có prompt instruction thì coi đó là hàng rào mềm, không đủ cho việc nhạy cảm.

Allowed users và allowed channels

Nếu agent có channel như Telegram/Slack/Discord:

  • allowlist user ID;
  • không bật group public;
  • group nếu cần thì require mention;
  • không cho unknown sender tạo session mới;
  • log sender/channel cho từng request;
  • có command stop/pause rõ.

Một setup tệ:

Anyone who can message the bot can ask it to work in the default workspace.

Một setup tốt hơn:

Only my Telegram user ID can talk to this bot. Default workspace is a throwaway repo. Risky tools require approval.

Approval gates

Các action nên cần approval:

  • chạy shell command;
  • ghi file;
  • xóa file;
  • cài package;
  • gọi network bên ngoài;
  • đọc file ngoài workspace;
  • deploy;
  • migration;
  • gửi message/email ra ngoài;
  • tạo hoặc sửa credential.

Nếu tool cho cấu hình approval policy, dùng config. Nếu không, đặt prompt rule nhưng phải hiểu prompt rule có thể bị model bỏ qua.

Prompt guardrail:

Before running shell commands, editing files, installing packages, or accessing network resources, explain the action and wait for approval.

Config guardrail tốt hơn nếu available:

allow_read: workspace only
allow_write: workspace only, approval required
allow_shell: approval required
allow_network: disabled by default

Tên field cụ thể phụ thuộc tool. Kiểm tra docs hiện tại thay vì copy pseudo-config.

Logs và review trail

Không có log thì không audit được.

Ghi lại:

  • user/channel gửi task;
  • prompt chính;
  • tool calls;
  • files changed;
  • commands run;
  • errors;
  • final summary;
  • Git diff.

Với repo, Git là review trail chính:

git status --short
git diff --stat
git diff

Trước khi tiếp tục task mới, working tree phải được hiểu rõ: commit, revert, stash, hoặc ghi note vì sao còn dirty. Đừng để agent chồng nhiều task lên cùng một diff mơ hồ.

Cleanup checklist sau experiment

Sau mỗi lab:

  1. Stop agent/gateway process.
  2. Check running process còn sót không.
  3. Revoke token test nếu không dùng nữa.
  4. Xóa channel bot token cũ nếu đã expose.
  5. Kiểm tra .local/ không bị stage.
  6. Kiểm tra Git diff.
  7. Xóa throwaway repo nếu không cần.
  8. Archive log nếu muốn học lại.

Command cơ bản:

git status --short
git diff --stat

Nếu thấy .env, .local, credential file trong Git status, dừng. Sửa .gitignore trước.

Khi nào setup đủ an toàn để dùng repo thật

Không có mốc tuyệt đối, nhưng tôi cần tối thiểu:

  • agent pass read-only smoke test;
  • agent pass one-file write test trong throwaway repo;
  • approval gate hoạt động;
  • workspace path bị giới hạn;
  • secrets nằm ngoài workspace hoặc trong secret manager;
  • Git rollback đã thử;
  • logs đọc được;
  • user/channel allowlist rõ.

Nếu thiếu một trong các điểm này, tiếp tục lab. Đừng dùng repo thật để debug permission model.

Chốt lại

Agent workstation tốt không cần phức tạp. Nó cần một nguyên tắc: agent chỉ được thấy và làm những gì task cần.

Throwaway repo trước. Secrets ngoài workspace. Allowed users rõ. Tools có approval. Logs đủ để audit. Cleanup sau khi thử. Làm được vậy, vibe coding bằng agent tự host sẽ bớt giống đánh cược với máy cá nhân.

Tham khảo