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) — sinh SKILL.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ầnChi tiết
Release tagv0.1.0, commit bec7ce7, 2026-04-19 03:38 UTC
Ngôn ngữPython 100%, yêu cầu 3.11+
StorageSQLite mã hoá, mặc định ~/.hermes/hermes-vault-data
Key derivationHERMES_VAULT_PASSPHRASE env + file salt local
Fail modeFail closed khi DB có mà salt thiếu
Broker deliveryEphemeral env var, per-agent TTL + policy
Verifier tích hợpSupabase (v0.1.0)
LicenseMIT
Release assets4 file

So sánh nhanh

ToolMô hìnhPhù hợp
1Password CLI / AWS Secrets ManagerCloud, human + CITeam ops, không phải agent local
Doppler / InfisicalSaaS, cần network + accountTeam cloud-first
Hermes Agent redact.pyScrub outputChặn leak ở đầu ra
Hermes VaultLocal SQLite + ephemeral env brokerAgent 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 scan một phát trên ~/.hermes.
  • Migrate từ flat .env: import --redact-source ingest 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.