Parallel tool calls intermittently lose or mangle `tool_id`
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 38/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- rust, typescript
- Área
- ai-infra-agents, cli, tooling
Línea de trabajo
The report traces the failure through multi_tool_use.parallel batch assembly and the functions.tool_call wrapper, but does not identify source files or tests. Start by locating those entry points and tracing how nested tool_id values are passed through; internal runtime traces may be needed to distinguish generation from wrapper behavior. Done means malformed IDs are caught before dispatch with a deterministic diagnostic or sequential fallback, with coverage for missing, non-string, and unqualified IDs.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Checks
- I have searched github.com/aws/amazon-q-developer-cli/issues and there are no duplicates of my issue
- I have run
q doctorin the affected terminal session - I have run
q restartand replicated the issue again
Operating system
macOS 26.5.1 (25F80)
Expected behaviour
Expected behavior
Validate each nested call before the parallel batch is dispatched. For every nested item:
tool_idis present,tool_idis a string,tool_idis fully namespaced (<server>::<tool>).
If any item fails validation:
- do not dispatch the batch with the malformed item,
- return a deterministic, local diagnostic that names the offending item, or
- fall back to dispatching the calls sequentially.
A clear pre-dispatch validation error (naming which nested call lacks a valid namespaced tool_id)
is far more actionable than the current opaque received undefined.
Actual behaviour
Summary
When the agent emits multiple tool calls in parallel, the runtime wraps them in a
multi_tool_use.parallel payload and converts each nested item into a functions.tool_call.
Intermittently, an individual nested call is malformed: it either omits the required tool_id,
or carries a non-namespaced id (e.g. some_tool instead of server-name::some_tool).
The runtime then rejects the call at input validation, before the tool runs:
Invalid input for tool_call — tool_id: expected string, received undefined
or rejects an unknown (unqualified) tool id before dispatch.
Impact
- Non-deterministic: the same logical call succeeds on one turn and fails on another.
- Independent of user-supplied parameters — the arguments object is well-formed; only the
envelope'stool_idfield is affected. - Blocks individual steps in multi-step / parallel workflows. The agent must retry, often
serializing calls as a manual workaround.
Where it happens (observed)
The failure occurs upstream of the actual tool server, in the orchestration chain:
agent output → multi_tool_use.parallel (batch assembly) → functions.tool_call (per-item wrapper) → tool server
By the time the request reaches any downstream MCP server/proxy, it is already a single resolved
call — the tool_id is either present or already lost. The downstream server only sees input
validation fail; it is not the source.
Root cause (hypothesis)
The field is lost or mis-formed at the multi_tool_use.parallel → functions.tool_call step —
either during model generation of the parallel batch, or in the parallel-wrapper orchestration that
converts batch items into individual tool_calls.
Unknown without internal traces: which of the two (model generation vs. wrapper orchestration)
drops the field. This cannot be isolated from outside the runtime.
Steps to reproduce
Reproduction notes
- Not tied to a specific tool or specific arguments — any parallel batch can exhibit it.
- Intermittent; higher chance with larger parallel batches.
- Reproducing reliably likely requires internal runtime tracing of the batch-assembly step.
Environment
<This will be visible to anyone. Do not include personal or sensitive information>
[q-details]
version = "2.29.1"
hash = "31e6bb3fad4a1fff9ba23aee436cef61c8579a58"
date = "2026-10-10T03:23:46.20488Z (1d ago)"
variant = "full"
[system-info]
os = "macOS 26.5.1 (25F80)"
chip = "Apple M4"
total-cores = 10
memory = "24.00 GB"
[environment]
cwd = "/Users/USER/portfolio-agent-runtime"
cli-path = "/Users/USER/portfolio-agent-runtime"
os = "Mac"
shell-path = "/bin/zsh"
shell-version = "5.9"
terminal = "iTerm 2"
install-method = "unknown"
[env-vars]
PATH = "/Users/USER/.bun/bin:/Users/USER/.nvm/versions/node/v24.20.0/bin:/Users/USER/Library/Python/3.13/bin:/Users/USER/.local/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/pkg/env/global/bin:/opt/homebrew/bin:/Applications/iTerm.app/Contents/Resources/utilities"
SHELL = "/bin/zsh"
TERM = "xterm-256color"
__CFBundleIdentifier = "com.googlecode.iterm2"
- Lenguaje dominante
- Rust
- Estrellas
- 2k
- Forks
- 441
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin 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 aws/amazon-q-developer-cli
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
aws/amazon-q-developer-cli#3898 ·
-
bug: invalid JSON in agent-format.md `allowedTools` Examples block (JS `//` comments + unquoted `@builtin`) breaks copy-pastePosiblemente ocupada @ken-jo la tomó hace 114 días. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
aws/amazon-q-developer-cli#3851 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
aws/amazon-q-developer-cli#3316 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
aws/amazon-q-developer-cli#3023 · 2 comentarios ·
-
Amazon q not respondingAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 55/100
aws/amazon-q-developer-cli#3928 ·
Todos los issues de aws/amazon-q-developer-cli
Issues similares
-
Docs: refresh target-app-parity and file-format-parity against mainPosiblemente ocupada @vangel76 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
storytold/photocraft#4417 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
bevyengine/dlss_wgpu#37 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
wgpu error: Validation ErrorAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 63/100
bherbruck/solvecraft#369 ·
-
enhancement
Dificultad 1/5 Menos de una hora Aptitud para principiantes 83/100
alunduil/git-worktree-poi#11 ·