- Andrew Simons vừa ship v0.1.0 của Hermes Vault — scanner, vault mã hoá SQLite, broker TTL và verifier, tất cả chạy local, MIT license.
- Thiết kế riêng cho mô hình thực thi của agent Hermes, nơi plaintext .env và subprocess kế thừa toàn bộ env là lỗ hổng mặc định.
TL;DR
Ngày 2026-04-19, Andrew Simons (@tonysimons_) ship tag v0.1.0 của Hermes Vault — một credential broker, scanner và vault mã hoá chạy hoàn toàn local, thiết kế riêng cho agent Hermes của Nous Research. Cài qua pip install hermes-vault, yêu cầu Python 3.11+, giấy phép MIT. Mục tiêu: khoá sổ lỗ hổng kinh điển — secret nằm plaintext trong ~/.hermes/.env, mọi subprocess kế thừa nguyên key, và skill không có cách khai báo credential nó cần.
Có gì trong v0.1.0
Bốn hệ con cộng thêm generator, chia vai rõ ràng:
- Scanner (
hermes-vault scan) — rà thư mục Hermes, báo plaintext secret, credential trùng, và permission file không an toàn. - Vault — SQLite mã hoá, master key derive runtime từ
HERMES_VAULT_PASSPHRASE+ file salt local. Fail closed nếu DB có mà salt mất — không có fallback yếu. - Broker (
hermes-vault broker env) — bung credential ra env var tạm thời, có TTL và policy theo từng agent. - Verifier (
hermes-vault verify) — validate credential trước khi agent re-auth; tích hợp sẵn Supabase. - Skill generator (
hermes-vault generate-skill) — sinhSKILL.mdđể agent và sub-agent khai báo credential cần, biến implicit access thành explicit contract.
Polish kèm: banner và help text gọn hơn, import_backup giữ timestamp và regenerate ID hợp lệ, cờ mới import --redact-source tự động xoá plaintext khỏi file gốc sau khi ingest.
Vì sao quan trọng
Issue #410 của Hermes Agent đã ghi thẳng: secrets đang nằm plaintext trong ~/.hermes/.env, mọi subprocess nhận full environment, file tool có thể expose raw key, và skill không có cơ chế khai báo credential. Đây là bài toán của mô hình thực thi agent, không phải bài toán dev thường. Vault như 1Password hay AWS Secrets Manager giải cho con người và CI; Hermes Vault giải cho agent chạy local với nhu cầu least-privilege theo phiên.
Cách chia tầng cũng đáng chú ý: Hermes Agent đã có agent/redact.py để scrub output trước khi hiển thị. Hermes Vault làm ở tầng trước — chặn secret lọt vào env của sub-process không được phép ngay từ đầu. Hai lớp bổ sung nhau, không chồng chéo.
Thông tin kỹ thuật
| Thành phần | Chi tiết |
|---|---|
| Release tag | v0.1.0, commit bec7ce7, 2026-04-19 03:38 UTC |
| Ngôn ngữ | Python 100%, yêu cầu 3.11+ |
| Storage | SQLite mã hoá, mặc định ~/.hermes/hermes-vault-data |
| Key derivation | HERMES_VAULT_PASSPHRASE env + file salt local |
| Fail mode | Fail closed khi DB có mà salt thiếu |
| Broker delivery | Ephemeral env var, per-agent TTL + policy |
| Verifier tích hợp | Supabase (v0.1.0) |
| License | MIT |
| Release assets | 4 file |
So sánh nhanh
| Tool | Mô hình | Phù hợp |
|---|---|---|
| 1Password CLI / AWS Secrets Manager | Cloud, human + CI | Team ops, không phải agent local |
| Doppler / Infisical | SaaS, cần network + account | Team cloud-first |
Hermes Agent redact.py | Scrub output | Chặn leak ở đầu ra |
| Hermes Vault | Local SQLite + ephemeral env broker | Agent Hermes chạy trên máy cá nhân, cần least-privilege per-agent |
Use case thực tế
- Indie dev chạy Hermes Agent local, có 10+ API key (OpenAI, Anthropic, GitHub, Supabase, Stripe…) đang dồn vào một file
.env. - Team tự viết skill Hermes muốn khai báo cụ thể "skill này cần
STRIPE_SECRET_KEY" mà không expose phần còn lại của keyring. - Audit trước khi ship config agent mới: chạy
hermes-vault scanmột phát trên~/.hermes. - Migrate từ flat
.env:import --redact-sourceingest và xoá plaintext trong một pass. - Hệ thống multi-agent muốn mỗi sub-agent chỉ thấy subset credential của nó.
Giới hạn & giá
- Giá: miễn phí, MIT OSS. Không có tier trả phí.
- Ngôn ngữ: chỉ Python 3.11+ ở v0.1.0, chưa có client Node/Go/Rust.
- Phạm vi: nhắm riêng Hermes Agent; CLI agent khác dùng được nhưng chưa có plugin ecosystem.
- Maintainer: solo dev (Andrew Simons). Kỳ vọng rough edges ở CLI UX và verifier provider ngoài Supabase.
- Key loss: mất
HERMES_VAULT_PASSPHRASE+ salt = mất vault, không recover. Thiết kế cố ý. - Không phải service mạng — không thay thế tool chia sẻ secret team-wide.
Bước tiếp theo
v0.1.0 là tag public đầu tiên, nên tín hiệu roadmap còn mờ nhưng hướng rõ: thêm verifier cho provider khác ngoài Supabase, mở rộng rule pack cho scanner, tinh CLI interactive. Câu hỏi dài hạn là NousResearch có đón pattern này như reference broker chính thức cho ecosystem Hermes Agent hay không — issue #410 đã đặt bài toán, Hermes Vault đã đưa lời giải thực thi được ngay hôm nay.
Nếu bạn đang chạy Hermes Agent hoặc bất kỳ agent framework nào ghi secret ra .env rồi để subprocess kế thừa, đây là lời nhắc đáng giá: mô hình bảo mật cho agent khác hẳn mô hình bảo mật cho dev workstation. Agent chạy code do LLM sinh, gọi tool do LLM chọn, với quyền mặc định là toàn bộ keyring. Cờ --redact-source kèm import nghe nhỏ nhưng phản ánh đúng mindset: sau khi ingest vào vault, plaintext không còn lý do tồn tại trên disk. Cùng logic, ephemeral env var với TTL ngắn nghĩa là dù agent bị prompt-inject để đọc environ, thứ nó thấy cũng chỉ là subset tối thiểu đã được policy phê duyệt cho phiên đó.
Điểm đáng khen nữa: v0.1.0 không cố làm quá nhiều — solo maintainer, tập trung đúng bốn lát cắt (scan, store, broker, verify), MIT, Python thuần, không bắt user cài rust toolchain hay service nền. Dễ đọc, dễ audit, dễ fork cho framework agent khác.
Nguồn: GitHub release v0.1.0, repo asimons81/hermes-vault, Hermes Agent security docs, NousResearch/hermes-agent#410.

