claude-code-multiplex demo: agents cannot reach the Anthropic API (egress denied by default)
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 1/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 76/100
- Tipo de issue
- Documentación
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- go, kubernetes
- Área
- devops, documentation
Línea de trabajo
Busca el tutorial del README para la demo claude-code-multiplex y compara sus pasos con el ejemplo de egress-policy del issue. Documenta la política mínima que permite api.anthropic.com antes de crear o reanudar el agente. Se considera terminado cuando el tutorial del README incluye el comando requerido y las llamadas de Claude de la demo pueden llegar a la API.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What happened?
The claude-code-multiplex demo's agents cannot reach the Anthropic API: the egress gateway denies every outbound request the workload makes, so claude --print fails on every tick and the demo cannot be run as the README documents.
Steps to Reproduce
- Install substrate and deploy the demo as the README describes:
ANTHROPIC_API_KEY=sk-ant-... BUCKET_NAME=... \ ./hack/install-ate.sh --deploy-demo-claude-code-multiplex - Create and resume an actor:
kubectl ate create actor agent-luna -a claude-multiplex-demo --template agent-luna kubectl ate resume actor agent-luna -a claude-multiplex-demo - Watch the worker pod logs (the ateom container's
atunnelwarnings), or the actor container output.
Actual Behavior
atunnel: egress gateway rejected CONNECT with 403 Forbidden: egress denied
and on the actor side:
[demo-actor:luna] running: Tell me one short, surprising fact about the Moon. One sentence.
Failed to authenticate. API Error: 403 egress denied
[demo-actor:luna] claude exited non-zero
The actor runs, the workload loop ticks, but every Claude call is rejected before it leaves the cluster.
Root Cause
Every Actor starts with no egress policy, and the gateway treats "no policy" the same as "empty policy": deny (cmd/atenet/internal/router/egress/egress.go, lookupPolicy). Neither the demo's deploy step (cmd/ate-setup/internal/demos/claudemultiplex) nor kubectl ate create actor provisions one, and the README's walkthrough has no create egress-policy step. So the agent actors are created into a default-deny posture the demo never opens — on any cluster, GKE included: api.anthropic.com is a public destination that no rule allows.
I verified the causal chain on a kind cluster by toggling one actor's policy:
- delete the policy → the next tick fails (
claude exited non-zero) - re-create the policy → the very next tick succeeds (same actor, same pod, same task)
cat <<'EOF' | kubectl ate create egress-policy agent-luna -a claude-multiplex-demo -f -
rules:
- https:
hostnames: ["api.anthropic.com"]
EOF
is enough to make the demo work. (Where the API is reached through a plain-HTTP proxy instead, an http rule is needed; note that an http and an https rule with the same pattern on the same ports are rejected as a tie, so a wildcard both-protocol allow-all is not expressible as two rules.)
Expected Behavior
One of:
- The README documents the missing step, with a minimal
api.anthropic.comrule for the agents — the documentation fix this issue asks for. - The demo's deploy step provisions the agents' egress policies, so the walkthrough runs with no manual step. The demo already substitutes
ANTHROPIC_API_KEYinto the templates and could substitute the allow rule the same way. - #1324 (default egress policy in ActorTemplate) lands and the templates carry their rule — the platform-level fix; the demo step then disappears again.
Additional context
- #1324 tracks the template-level default policy; this issue is the concrete demo walkthrough that breaks without something like it.
- #820 / #875 were the same class of problem for this demo (walkthrough broken by a control-plane hardening), fixed by updating the demo rather than the platform.
- The egress default-deny posture landed in f980a57d (2026-09-14); the README's current walkthrough predates or missed accounting for it.
- Lenguaje dominante
- Go
- Estrellas
- 5k
- Forks
- 563
- Merge medio
- 2 d 15 h
- PR fusionados (30 d)
- 422
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la 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 agent-substrate/substrate
-
filecache: TestGetFileToPublishedCopyIsWriteProtected fails when tests run as rootPosiblemente ocupada @cloudonly la tomó hace 1 día. Abiertoarea/storage area/tests kind/bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 65/100
agent-substrate/substrate#2704 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
[Bug]: e2e color tests fail when NO_COLOR is setPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertoarea/tests kind/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
agent-substrate/substrate#2465 ·
Los mantenedores suelen responder en 1 día
-
[Bug]: snapshot download mishandles reader close errorsPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertoarea/storage kind/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
agent-substrate/substrate#2445 ·
Los mantenedores suelen responder en 1 día
-
[Bug]: e2e script flag parsing is brokenPosiblemente ocupada @ericcurtin la tomó hace 10 días. Abiertoarea/dev-infra area/tests kind/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
agent-substrate/substrate#2217 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
docs/api-guide.md: "an actor occupies its whole worker" contradicts multi-actor workersPosiblemente ocupada @ericcurtin la tomó hace 11 días. Abiertoarea/api kind/docs
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
agent-substrate/substrate#2152 ·
Los mantenedores suelen responder en 1 día
Todos los issues de agent-substrate/substrate
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
documentation hacktoberfest priority: low skill: good first issue status: ready for dev
Dificultad 2/5 Medio día Aptitud para principiantes 85/100
hyperledger-labs/fabric-smart-client#2142 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
numberly/vault-db-injector#107 ·
Los mantenedores suelen responder en 1 día
-
area/import kind/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
[DOC] Wrong sg_egress_ports range in the Terraform Databricks Guide for AWS Hub & Spoke with Network FirewallPosiblemente ocupada @akhil9tiet la tomó hoy. Abiertodocs
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
databricks/terraform-provider-databricks#6080 · 1 comentario ·
Los mantenedores suelen responder en 3 días