This standalone Hermes Agent plugin resolves provider credentials from Proton
Pass through the official pass-cli. It implements Hermes' public
SecretSource contract; source ordering, conflict handling, protected
bootstrap tokens, timeouts, environment writes, and provenance remain owned by
Hermes core.
The plugin registers two sources so Hermes can preserve its mapped-over-bulk precedence rule:
protonpass— mappedpass://SHARE/ITEM/FIELDreferences, including scoped Proton Pass AI access tokens;protonpass_vault— optional bulk retrieval from one vault for personal access tokens.
pass-cli is verified against a pinned SHA-256 digest before use. Child
processes receive a minimal environment, secret-bearing output is never echoed,
and fetch failures never prevent Hermes from starting.
hermes plugins install flamerged/hermes-protonpass-plugin --enable
hermes protonpass setupHermes clones the repository into ~/.hermes/plugins/, enables the plugin, and
discovers its protonpass command on the next invocation. The repository can
also be installed as a Python package; it exposes the protonpass entry point
in the hermes_agent.plugins group.
Run the plugin-owned setup command:
hermes protonpass setupOr configure it manually in ~/.hermes/config.yaml:
plugins:
enabled:
- protonpass
secrets:
sources:
- protonpass
- protonpass_vault
protonpass:
enabled: true
service_token_env: PROTON_PASS_PERSONAL_ACCESS_TOKEN
override_existing: true
cache_ttl_seconds: 300
auto_install: true
env:
OPENROUTER_API_KEY: pass://SHARE_ID/ITEM_ID/api_key
protonpass_vault:
enabled: false
service_token_env: PROTON_PASS_PERSONAL_ACCESS_TOKEN
vault: Personal
override_existing: false
cache_ttl_seconds: 300
auto_install: truePut only the bootstrap token in ~/.hermes/.env:
PROTON_PASS_PERSONAL_ACCESS_TOKEN=pst_...Prefer a scoped, read-only, expiring AI access token. Bulk vault mode requires
a personal access token and has broader account access. Keep
protonpass_vault.enabled: false unless you explicitly need whole-vault
export.
hermes protonpass setup
hermes protonpass status
hermes protonpass sync
hermes protonpass sync --apply
hermes protonpass disable
hermes protonpass install
The plugin bundles a vault-access skill (skill_view("protonpass:vault-access"))
for mapping existing item references in config.yaml and diagnosing resolution with
hermes protonpass status and sync. It works with repository and Python package
installs. Users obtain missing IDs in their own authenticated Proton Pass CLI session;
the skill does not enumerate vaults, display secrets, or request bootstrap tokens.
Run the test suite through a Hermes Agent checkout's canonical runner:
cd /path/to/hermes-agent
uv sync --python 3.11 --extra dev
uv pip install --python .venv/bin/python --no-deps \
-e /path/to/hermes-protonpass-plugin
scripts/run_tests.sh /path/to/hermes-protonpass-plugin/testsTests are hermetic: they use temporary Hermes homes and mocked subprocess or download boundaries. No live Proton account is required.
CI also builds the wheel and source distribution, installs each into a separate
environment with Hermes 0.18.2 and dependency resolution, and runs
scripts/check_installed_plugin.py from outside the checkout. This checks the real
entry point and skill loading from site-packages, including the bundled resource.