Let credential_helper supply API keys and other secrets, not only DOCKER_TOKEN
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
Línea de trabajo
Start with pkg/environment/credential_helper.go, then trace how credential_helper is configured and how secrets are resolved for providers and MCP tokens. The issue leaves key design choices open, including opt-in names, how names reach the command, and whether helpers can coexist. Done means preserving existing DOCKER_TOKEN behavior while supporting the agreed secret lookup flow, fallback, caching, and doctor reporting.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Overview
Let credential_helper (in ~/.config/cagent/config.yaml) supply provider API keys and MCP tokens, not only DOCKER_TOKEN.
Motivation
"Credential helper" reads as the generic way to plug a secret store into docker-agent (as with git and Docker credential helpers), and the secrets guide described it that way until #4701. In the code it has only ever answered DOCKER_TOKEN (pkg/environment/credential_helper.go).
1Password users are covered by op:// references, which work in every source. Users of other stores (HashiCorp Vault, Bitwarden, pass, a corporate secrets daemon) have no equivalent. The macOS Keychain and pass sources were removed, so a generic helper would also be their natural replacement.
Use cases
# ~/.config/cagent/config.yaml
credential_helper:
command: vault-get # prints the secret for the name it receives
variables: [ANTHROPIC_API_KEY, OPENAI_API_KEY, GITHUB_PERSONAL_ACCESS_TOKEN]
Proposed solution
Backward compatibility is the constraint. Existing helpers ignore their input and print the Docker token. Calling them for ANTHROPIC_API_KEY would send the Docker token as an API key. So serving other names must be opt-in:
- New optional
variableslist (or"*"). Without it, behavior is unchanged:DOCKER_TOKENonly. - The requested name is passed to the command, as the final argument and/or a
DOCKER_AGENT_SECRET_NAMEenv var (to decide). - Empty output or a non-zero exit means "not found": the chain falls through to the next source (Docker Desktop).
- Cache results per process: the helper is spawned at most once per name, as the
op://resolver does. op://output is still resolved, since the helper sits inside the 1Password wrapper.docker agent doctorreportscredential-helperas the source.
Open questions:
- Explicit list vs
"*":"*"spawns the helper for every unresolved lookup (MCP${VAR}expansion, doctor checks), so an explicit list may be the safer default. - Name passing: argument, env var, or a
{name}placeholder inargs(e.g.args: ["kv", "get", "secret/{name}"]). - Keep one
credential_helperblock, or add a separate one (e.g.secret_helper) so the Docker-token helper and an API-key helper can coexist?
Alternatives
op://references: 1Password only.- Generating
~/.config/cagent/.envfrom the store: works, but writes plain-text secrets to disk. - Shell wrappers exporting variables before
docker agent run: leaks keys into the shell environment that other tools read (see #4702).
Related issues
- #4701: docs now state the helper only supplies
DOCKER_TOKEN. - #4702:
DOCKER_AGENT_-prefixed secret variables.
- Lenguaje dominante
- Go
- Estrellas
- 4.6k
- Forks
- 522
- Merge medio
- 10 h 33 min
- PR fusionados (30 d)
- 231
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de docker/docker-agent
-
Error when trying to run sandbox example?Posiblemente ocupada @dgageot la tomó hace 2 días. Abiertoarea/cli
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
docker/docker-agent#4672 · 1 comentario · 1 reacción · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
pkg/hooks tests fail with a misleading assertion when jq is not installedPosiblemente ocupada @dwin-gharibi la tomó hace 59 días. Abiertoarea/testing
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
docker/docker-agent#4052 ·
Los mantenedores suelen responder en 1 día
-
`remove_directory` and `create_directory` hide work they already did when a later path failsPosiblemente ocupada @dwin-gharibi la tomó hace 77 días. Abiertoarea/tools
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
docker/docker-agent#3933 ·
Los mantenedores suelen responder en 1 día
-
`edit_file` silently edits the first match when `oldText` occurs more than oncePosiblemente ocupada @dwin-gharibi la tomó hace 77 días. Abiertoarea/tools
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
docker/docker-agent#3929 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Read DOCKER_AGENT_ENV_-prefixed secret variables before the plain namesPosiblemente ocupada @aheritier la tomó hoy. Abiertoarea/cli area/config area/security kind/feat
docker/docker-agent#4702 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de docker/docker-agent
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 91/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
praetorianer777/Dynamo#53 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
kind/engineering pulumi/pulumi-terraform Task Workflow Failure
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
pulumi/pulumi-terraform#1261 ·
Los mantenedores suelen responder en 1 día
-
Controllers integration tests fail when port 8080 is in usePosiblemente ocupada @noahnut la tomó hoy. Abiertoarea/cluster-autoscaler kind/bug needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
kubernetes-sigs/cluster-autoscaler#236 · 1 comentario ·
Los mantenedores suelen responder en 1 día