fix(secrets): remove Honcho Redis password from container argv #124

Closed
opened 2026-05-09 00:58:21 +02:00 by codex · 3 comments
Collaborator

Context

During Wave 2 v2 cataloging for issue #100, Codex attempted to verify Honcho Redis persistence mode without reading secret stores.

A read-only docker inspect of home-platform-honcho-redis-1 showed that the Redis password is embedded in the container command/argv. The value is intentionally not copied here.

Why this matters

Secrets in argv/container command are visible to Docker users and can leak through diagnostics, logs, support bundles, and agent transcripts. This violates the platform's secret-handling posture: no raw secrets in argv, logs, PR text, or agent-visible output.

Scope

Move Honcho Redis authentication away from command-line argv into a safer secret delivery path, then re-run issue #100 v2 cataloging.

Acceptance criteria

  • docker inspect home-platform-honcho-redis-1 --format '{{json .Config.Cmd}}' no longer contains a raw Redis password.
  • Redis still requires authentication.
  • Honcho services still connect successfully.
  • No secret value is committed, pasted, or printed in PR bodies/logs.
  • Issue #100 can verify persistence mode without exposing the credential.

Out of scope

  • Do not rotate or print the current secret in this issue thread.
  • Do not change Honcho data retention semantics without operator approval.

Trace

  • Blocks #100 until resolved or operator explicitly accepts the residual risk.
## Context During Wave 2 v2 cataloging for issue #100, Codex attempted to verify Honcho Redis persistence mode without reading secret stores. A read-only `docker inspect` of `home-platform-honcho-redis-1` showed that the Redis password is embedded in the container command/argv. The value is intentionally not copied here. ## Why this matters Secrets in argv/container command are visible to Docker users and can leak through diagnostics, logs, support bundles, and agent transcripts. This violates the platform's secret-handling posture: no raw secrets in argv, logs, PR text, or agent-visible output. ## Scope Move Honcho Redis authentication away from command-line argv into a safer secret delivery path, then re-run issue #100 v2 cataloging. ## Acceptance criteria - `docker inspect home-platform-honcho-redis-1 --format '{{json .Config.Cmd}}'` no longer contains a raw Redis password. - Redis still requires authentication. - Honcho services still connect successfully. - No secret value is committed, pasted, or printed in PR bodies/logs. - Issue #100 can verify persistence mode without exposing the credential. ## Out of scope - Do not rotate or print the current secret in this issue thread. - Do not change Honcho data retention semantics without operator approval. ## Trace - Blocks #100 until resolved or operator explicitly accepts the residual risk.
Author
Collaborator

Role: executor
Intent: checkpoint
Needs owner: yes

Packet N is blocked before code changes.

What I verified:

  • pdurlej/platform does not contain the authoritative compose file; it only has the module manifest/runbook.
  • The authoritative compose file is in /opt/vps-home-platform-infra/compose/apps/compose.yaml on RS2000, under a separate git repo: pdurlej/vps-home-platform-infra.
  • The RS2000 infra worktree is dirty and main is ahead/behind origin, so directly editing it from this platform task would not be a clean reviewable PR.
  • The codex PAT used for platform PRs cannot clone pdurlej/vps-home-platform-infra (Repository not found), so I cannot open the proper infra PR as codex from here.
  • Honcho API and Honcho Deriver command argv do not contain Redis/password/requirepass terms; I found no bundled client argv leak in those two containers.
  • Honcho Redis still has --requirepass in container command argv. I did not paste the secret value.

I am stopping instead of mutating the live RS2000 compose checkout. A safe fix needs either:

  1. grant codex access to pdurlej/vps-home-platform-infra and run this as an infra PR, or
  2. operator/orchestrator prepares a clean infra branch/worktree for Codex, or
  3. operator explicitly applies the compose hotfix manually and then #100 can be retried.

Recommended fix shape once infra PR access exists:

  • change honcho-redis command to use redis-server --appendonly yes --save 60 1 --requirepass "$$REDIS_PASSWORD"
  • add environment: ["REDIS_PASSWORD=${HONCHO_REDIS_PASSWORD:?set HONCHO_REDIS_PASSWORD}"]
  • redeploy only after merge: operator runs docker compose up -d honcho-redis

Next: choose infra PR access or manual operator hotfix; then re-run Packet N/#124.

**Role:** executor **Intent:** checkpoint **Needs owner:** yes Packet N is blocked before code changes. What I verified: - `pdurlej/platform` does not contain the authoritative compose file; it only has the module manifest/runbook. - The authoritative compose file is in `/opt/vps-home-platform-infra/compose/apps/compose.yaml` on RS2000, under a separate git repo: `pdurlej/vps-home-platform-infra`. - The RS2000 infra worktree is dirty and `main` is ahead/behind origin, so directly editing it from this platform task would not be a clean reviewable PR. - The codex PAT used for platform PRs cannot clone `pdurlej/vps-home-platform-infra` (`Repository not found`), so I cannot open the proper infra PR as codex from here. - Honcho API and Honcho Deriver command argv do not contain Redis/password/requirepass terms; I found no bundled client argv leak in those two containers. - Honcho Redis still has `--requirepass` in container command argv. I did not paste the secret value. I am stopping instead of mutating the live RS2000 compose checkout. A safe fix needs either: 1. grant codex access to `pdurlej/vps-home-platform-infra` and run this as an infra PR, or 2. operator/orchestrator prepares a clean infra branch/worktree for Codex, or 3. operator explicitly applies the compose hotfix manually and then #100 can be retried. Recommended fix shape once infra PR access exists: - change `honcho-redis` command to use `redis-server --appendonly yes --save 60 1 --requirepass "$$REDIS_PASSWORD"` - add `environment: ["REDIS_PASSWORD=${HONCHO_REDIS_PASSWORD:?set HONCHO_REDIS_PASSWORD}"]` - redeploy only after merge: operator runs `docker compose up -d honcho-redis` **Next:** choose infra PR access or manual operator hotfix; then re-run Packet N/#124.
Author
Collaborator

W4c Fork C — argv leak evidence PR opened — 2026-05-24

Role: executor
Intent: checkpoint
Needs owner: via PR merge decision

Opened #441.

Finding

Current RS2000 runtime no longer has the Honcho Redis password value in Config.Cmd.

Metadata-only evidence:

  • cmd_contains_redis_password_value=false
  • cmd_has_literal_env_ref=true
  • unauth_ping_rejected=true
  • authenticated_ping_ok=true via REDISCLI_AUTH
  • Honcho Redis/API/Deriver containers are running and healthy

No secret value was printed or stored. No runtime mutation was performed.

Residual risk

The password still exists in the container environment. That is a separate redis-password-env-var-interim hardening class, not the raw argv leak tracked here.

Recommendation

Merge #441 and close this issue. #100 can continue cataloging without exposing the credential through Config.Cmd.

## W4c Fork C — argv leak evidence PR opened — 2026-05-24 **Role:** executor **Intent:** checkpoint **Needs owner:** via PR merge decision Opened #441. ### Finding Current RS2000 runtime no longer has the Honcho Redis password value in `Config.Cmd`. Metadata-only evidence: - `cmd_contains_redis_password_value=false` - `cmd_has_literal_env_ref=true` - `unauth_ping_rejected=true` - `authenticated_ping_ok=true` via `REDISCLI_AUTH` - Honcho Redis/API/Deriver containers are running and healthy No secret value was printed or stored. No runtime mutation was performed. ### Residual risk The password still exists in the container environment. That is a separate `redis-password-env-var-interim` hardening class, not the raw argv leak tracked here. ### Recommendation Merge #441 and close this issue. #100 can continue cataloging without exposing the credential through `Config.Cmd`.
Author
Collaborator

W4c Honcho Redis argv evidence has been consolidated into #443. If #443 merges, this issue should close: current runtime no longer exposes the raw Redis password value in Config.Cmd; residual container-env exposure should be tracked separately if desired.

W4c Honcho Redis argv evidence has been consolidated into #443. If #443 merges, this issue should close: current runtime no longer exposes the raw Redis password value in Config.Cmd; residual container-env exposure should be tracked separately if desired.
Sign in to join this conversation.
No labels
W6d-automerge-calibration
agent/claude-code
agent/codex
agent/hermes
agent/iskra
agent/ollama
agent/patchwarden
automerge-candidate
class/security-sensitive
cutover-gate
dependency/blocked
dependency/blocks-others
dependency/cross-repo
dependency/needs-confirmation
domain:agents
domain:ci
domain:docs
domain:forgejo
domain:infra
domain:memory
domain:runtime
domain:signal
domain:ux
flow/architecture
flow/blocked
flow/deployed
flow/done
flow/implementation
flow/intake
flow/maintained
flow/observed
flow/ready
flow/refining
flow/retired
flow/review
iterating
judge/codex-candidate
judge/hermes-candidate
judge/low-confidence
judge/needs-refinement
judge/operator-needed
judge/p0
judge/p1
judge/p2
judge/p3
judge/park
judge/patchwarden-candidate
judge/stale-priority
kind/adr
kind/bug
kind/chore
kind/feature
kind/infra
kind/ops
kind/refactor
kind/research
large-impact
merge/auto
merge/manual
merge/manual-dependency-conflict
merge/manual-failing-tests
merge/manual-merge-conflict
merge/manual-missing-review
merge/manual-operator-preference
merge/manual-red-zone
merge/manual-security-sensitive
merge/manual-unclear-scope
merge/manual-unknown
meta
mode:operator-only
mode:patchwarden-iskra-approved
mode:safe-auto
needs-operator-decision
needs-triage
not-ready
observed/erroring
observed/needs-followup
observed/pending
observed/retire-candidate
observed/unused
observed/used
operator-emotional
owner-attention
phase/02
phase/03
priority:p0
priority:p1
priority:p2
priority:p3
proposed
ready-for-agent
ready-for-operator
recovery
review:claude-reviewed
review:codex-reviewed
review:dziadek-reviewed
review:needs-human
risk/exposure
risk/process
risk/product
risk/runtime
safety:external-write
safety:no-prod-mutation
safety:prod-impact
safety:secret-touch
size/large
size/medium
size/small
size/tiny
size/unknown
source/adr
source/agent-generated
source/manual
source/operator-chat
source/voice-note
status:blocked
status:codex-ready
status:merged:pending-evidence
status:needs-evidence
status:operator-needed
status:parked
tier/full
tier/lite
tier/stacked
tier:0-platform-substrate
tier:1-iskra-value-layer
tier:2-tools-products-modules
type:bug
type:chore
type:docs
type:feat
type:policy
type:research
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pdurlej/platform#124
No description provided.