This document captures the shipped security posture for
@gonkagate/hermes-agent-setup.
The public helper accepts the GonkaGate key only through a hidden interactive
prompt. It does not accept a plain --api-key flag.
The canonical secret contract is:
- store the key only in the resolved Hermes
.envfile - never write the raw key to
config.yaml - write only the non-secret
key_env: GONKAGATE_API_KEYselector on the managedproviders.gonkagateentry - never print the raw key to stdout or stderr
- redact raw
gp-...values andBearertokens in unexpected error paths
The helper writes only the minimum GonkaGate-managed surface:
providers.gonkagate.base_urlproviders.gonkagate.key_envproviders.gonkagate.transportproviders.gonkagate.discover_modelsproviders.gonkagate.modelsmodel.providermodel.defaultGONKAGATE_API_KEY
Cleanup is limited to the old helper-managed direct custom model fields
(model.base_url, model.api_key) plus current model-owned conflict surfaces:
model.api and incompatible model.api_mode.
Write safety rules:
- resolve the full review plan before any write
- create same-run backups before replacing existing files
- write
config.yamlfirst and.envsecond - roll back
config.yamlif a later.envwrite fails - use owner-only
.envpermissions where supported on launch platforms
The shipped runtime treats these as active security or correctness surfaces:
- shared
OPENAI_API_KEYconsumers - non-managed
providers:/custom_providersentries that point at the canonical GonkaGate URL - duplicate matching provider entries
- matching
auth.jsoncredential pools undercredential_pool["custom:*"]
The helper manages only providers.gonkagate. It does not mutate
arbitrary provider registries or auth.json credential pools in v1. These
remain blocking manual-resolution cases with Hermes-owned follow-up.
The helper uses GET /v1/models as the live auth and catalog check before any
write, then intersects that result with checked-in launch qualification
artifacts.
That signal is intentionally limited:
- it confirms auth and model visibility
- it does not confirm billing or quota sufficiency
- it does not prove end-to-end Hermes runtime readiness for the first billable request
Launch qualification evidence lives under
docs/launch-qualification/hermes-agent-setup/.
The helper does not take ownership of:
- shell profile mutation
- arbitrary custom provider management
- arbitrary custom base URLs
- legacy endpoint paths such as
OPENAI_BASE_URL,LLM_MODEL, root-levelprovider/base_url - repository-local
.envfiles - direct mutation of
auth.json