All plugins

secretshield

Credentials stop at the tool boundary. Scans every tool call's arguments before dispatch and every finished reply before delivery for credential material (vendor API keys, GitHub/AWS/Google/Slack/Stripe tokens, PEM private keys, JWTs, bearer credentials, passwords in assignments), blocks the call or redacts the value fail-closed, and appends every attempt to a local incident ledger that stores only metadata (kind, length, masked preview), never the secret. Disclosure — SecretShield observes all tool call arguments, tool results and final replies in profiles where it is enabled and scans them locally; in the default enforce mode a detection blocks the tool call and a reply containing a credential is redacted with a notice; reply streaming is held until the reply is complete while it is enabled; it stores only detection metadata under $HERMES_HOME/secretshield/ and makes no network calls.

Whydiriki700Toolsv0.1.1Updated 2 hours ago

About

Credentials stop at the tool boundary. Scans every tool call's arguments before dispatch and every finished reply before delivery for credential material (vendor API keys, GitHub/AWS/Google/Slack/Stripe tokens, PEM private keys, JWTs, bearer credentials, passwords in assignments), blocks the call or redacts the value fail-closed, and appends every attempt to a local incident ledger that stores only metadata (kind, length, masked preview), never the secret. Disclosure — SecretShield observes all tool call arguments, tool results and final replies in profiles where it is enabled and scans them locally; in the default enforce mode a detection blocks the tool call and a reply containing a credential is redacted with a notice; reply streaming is held until the reply is complete while it is enabled; it stores only detection metadata under $HERMES_HOME/secretshield/ and makes no network calls.

SecretShield

Credentials stop at the tool boundary.

Hermes already masks known credential formats in logs and transcripts.
SecretShield is the enforcement layer on top of that masking: it decides
whether credential material is allowed to move.

What it does

  1. pre_tool_call (before dispatch) scans every tool call's arguments.
    A credential found there never leaves the machine inside a shell command,
    an HTTP request, a message send, or a file write:
    • enforce mode (default): the call is blocked with an explanation.
    • redact mode: the arguments are rewritten with the credential replaced
      and the call proceeds.
    • warn mode: the detection is recorded, nothing is changed.
  2. transform_llm_output scans the finished reply before delivery.
    Credentials in the text are redacted and a notice is appended, so a
    secret the model decides to quote never reaches the chat surface.
  3. post_tool_call scans tool results and records detections, so a
    tool that printed a secret into the session is visible in the ledger.

Detection is deterministic: vendor credential formats (OpenAI, Anthropic,
GitHub, AWS, Google, Slack, Stripe, SendGrid, npm, PyPI, Telegram, Discord,
JWTs, PEM private keys, bearer credentials, basic-auth URLs) plus
key = value assignment contexts. No LLM, no network.

Incident ledger

Every detection is appended to <HERMES_HOME>/secretshield/incidents.jsonl
with only metadata: timestamp, surface, action, credential kind, length,
and a masked preview (first 4 characters). The secret value is never
stored anywhere.
Inspect it with /shield, the shield_status tool,
or hermes secretshield incidents.

Configuration

plugins:
  entries:
    secretshield:
      settings:
        mode: enforce        # enforce | redact | warn | off
        disabled_kinds: []   # detector kinds to skip, e.g. ["jwt"]

Failure behavior

The scanner fails closed where it matters: if scanning itself errors in
enforce mode, a tool call is blocked rather than shipped unchecked and
a reply is withheld rather than delivered unscanned. Every such event is
recorded in the ledger as a scanner-error action.

Disclosure

SecretShield observes all tool call arguments, tool results, and final
replies in sessions of profiles where it is enabled, in order to scan
them locally. It makes no network calls, starts no processes, and writes
only its incident ledger under <HERMES_HOME>/secretshield/. Declared
capabilities in plugin.yaml match the registered hooks and tool exactly.

Verification

  • hermes plugins validate: passed, security scan safe.
  • hermes plugins doctor: OK, 1 tool and 4 hooks registered under the
    real runtime contracts.
  • Unit tests cover every detector family, all four modes, and a proof
    that the ledger never contains a secret value.
  • Live session test: a terminal call carrying a fake OpenAI key was
    blocked before dispatch and recorded in the ledger with a masked
    preview only.

README from the reviewed commit d356113; it updates when the author re-pins.

More by Whydiriki700

7 plugins by Whydiriki700 in the catalog.

Whydiriki700proofgateNo proof, no done. Verifies an agent's completion claims (file created, message sent, command ran, tests passed, figures quoted) against the tool evidence recorded in the same session, before the final reply is delivered. Unproven claims are flagged as unverified or withheld, fail closed, and every verdict is written to an append-only ledger stored locally in $HERMES_HOME/proofgate/. Disclosure — observes every tool call and final reply in profiles where it is enabled and stores tool arguments (sensitive-named keys redacted) and the first 800 characters of every tool result, unredacted, in append-only files under $HERMES_HOME/proofgate/ with no rotation; makes no network calls; in the default enforce mode it holds reply streaming and may append warnings to or entirely withhold a reply judged by keyword heuristics to contain unproven claims.Communitytools2Whydiriki700token-dashboardToken cost and usage dashboard for Hermes Desktop: a right pane with the focused session's live input and output tokens, session cost (backend-reported cost_usd when available, otherwise a labelled estimate from a built-in per-model price table), API calls and context usage bar, plus a recent-sessions overview with message counts and a status bar cost chip. Desktop-only (desktop/plugin.js inside the plugin SDK surface); no agent tools, hooks, middleware, or env vars. Disclosure: reads the focused session usage state and the session list through the Desktop host API and renders them locally; no network calls, no storage.CommunityDesktop app2Whydiriki700costguardA brake pedal for model spend. Meters every API call per session and per day from the provider's own usage block; dollar figures are estimates computed only for models in its price table and are never invented for unknown models. When a provider reports no usage (common with streaming OpenAI-compatible endpoints), it falls back to request-size estimates and flags those calls as estimated in every total, never pricing them. Warns the agent at a configurable ratio of any configured budget and blocks tool calls once a session or daily token/cost budget is exceeded, stopping the tool loops where runaway spend happens; with no budget configured it only meters and reports. Disclosure: observes API request/response metadata (token usage, model, session id) and tool call names in profiles where it is enabled; stores only aggregate counters locally under $HERMES_HOME/costguard/; makes no network calls; the brake cannot cancel the reply already being generated when a budget trips, it stops the tool work that reply tries next.Communitytools1Whydiriki700money-magnetFinance tracker and money magnet for Hermes Agent: record income and expenses, set a monthly budget and watch it fill, value a crypto portfolio against live prices, and scan for price gaps between exchanges. Transactions and budget live in local JSON under $HERMES_HOME/money-magnet/. Disclosure: the portfolio and arbitrage tools query the public CoinGecko and Binance price APIs (no account or API key; only coin symbols are sent). The tracker tools work fully offline.Communitytools1