/hq-cowork-secrets — Use HQ secrets from a sandboxed agent

SkillDev tools

Run commands with HQ secrets from Cowork without exposing values.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the /hq-cowork-secrets — Use HQ secrets from a sandboxed agent skill

What this skill tells your AI

The instructions your AI receives, as published by indigoai-us/hq-core in core/packages/hq-pack-cowork/skills/hq-cowork-secrets/SKILL.md and read by ahel’s review.

Runs commands with HQ secrets injected, and lists secret names, from inside Cowork — where the hq CLI and ~/.hq vault are unreachable. Routes through the host-side MCP server. The server never returns a secret value itself, and the secret-injecting tool refuses to run a shell or value-printing binary — but these tools run host commands with your privileges, so treat them as host-trusted, not an airtight boundary.

Args: $ARGUMENTSlist (+ optional company/prefix) or exec (keys + command). Infer from intent if not explicit.

Two modes

List names — mcp__hq__hq_secrets_list

Shows secret NAMES and path-based nested names. Values are never returned.

{ "company": "<slug>", "personal": false, "prefix": "DEV" }

Omit company to use the active company; set personal: true for the caller's personal vault; prefix filters by path segment.

Run with secrets — mcp__hq__hq_secrets_exec

Injects named secrets as env vars of the same name into a child process and returns only the command's stdout/stderr.

{
  "keys": ["STRIPE_KEY", "DB_URL"],
  "cmd": ["./scripts/migrate.sh"],
  "company": "<slug>",
  "personal": false
}

cmd is argv (argv0 + args), NOT a shell string. The tool REFUSES to launch a shell or a raw value-printing binary as cmd[0] (sh/bash/zsh, printenv, env, echo, printf, cat, tee, node/python/perl/ruby, base64, xxd, strings, …) — this is defense-in-depth so an injected one-liner can't echo an injected secret back through the tool result. Invoke the actual consumer binary directly (e.g. vercel, aws, gh, or a deploy script). This is not airtight: a custom binary you control could still observe a secret it was given, so treat the tool as host-trusted.

Security rules (hard — from HQ core)

  • No value-revealing path exists by design. hq secrets get --reveal is NOT wrapped. Do not attempt to capture a value by echoing the env var.
  • Cross-company isolation. Pass company explicitly when crossing contexts. If the scoped secret is missing or the command fails on auth, STOP and ask — never retry against a different company's vault.
  • Never paste secrets inline. Always consume via hq_secrets_exec injection; never ask the user to paste a value into chat.

When to use this instead of /hq-secrets

Only inside Cowork or another sandboxed plugin host. On a host-side session, prefer the unprefixed /hq-secrets (or hq run / hq secrets exec).

Why this skill exists

hq secrets exec reads the encrypted vault under ~/.hq with the user's Cognito session — neither is visible from Cowork's Linux VM. The host-side MCP server runs the real command on the host and returns only the child's output. The server never returns a secret value itself, and refuses to run a shell / value-printing binary — but it runs host commands with your privileges, so it is host-trusted, not a cryptographic boundary.

Signals

GitHub stars
84
Forks
15
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
hq-cowork-secrets
Source
github.com/indigoai-us/hq-core