github / github/copilot-cli

Constrain `run_factory` to registered factory names to prevent repeated guesses

Abierto
#4,425 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

area:agents area:tools
Lenguaje dominante
Shell
Estrellas
11.2k
Forks
1.9k
Merge medio
14 h 16 min
PR fusionados (30 d)
6

Descripción

Summary

run_factory can be exposed with an unconstrained name argument even when no matching factory is registered. The model can interpret tool availability as factory availability, invent plausible names, and retry them serially.

Originally reported from the VS Code Agents Window in microsoft/vscode#329551.

Observed behavior

With Copilot CLI 1.0.78 and GPT-5.6 Sol, one session produced 13 distinct model-authored run_factory calls. Every call failed immediately with:

RpcResponseError: No factory registered with name "<name>"

The model first tried eight implementation-oriented names:

  • apply_finding
  • code_implementation_factory
  • single_task
  • implementation
  • code-task
  • fix-factory
  • repo_task
  • review_then_implement

It later tried five more names for video analysis:

  • video_analysis
  • analyze_video
  • single_video_analysis
  • video-analysis
  • media_analysis

These were separate assistant-authored calls after each rejection, not host retries. No factory ran.

Steps to reproduce
  1. Expose run_factory in a session where no matching factories are registered.
  2. Ask the agent to perform a routine single-session task, such as a small implementation or media-analysis task.
  3. Observe that the model may invent and repeatedly retry factory names.
Expected behavior

Invalid factory names should be impossible or strongly bounded. Ideally:

  • Dynamically constrain name to registered factory names.
  • Do not expose run_factory when there are no registered factories or resumable runs.
  • If dynamic enum generation is not possible, require registry discovery before invocation and include available names in validation errors.
  • Enforce exactly one of name and resumeFromRunId at the schema level.
Actual behavior

name is effectively a free-form string, so failures occur only after a costly tool round trip. Prompt guidance to use factories selectively did not prevent repeated guesses.

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Empieza localizando en el repositorio el esquema de la herramienta run_factory, el registro de factories y la ruta de validación. Traza cómo se exponen los nombres registrados y las ejecuciones reanudables; se considera terminado cuando los nombres no válidos se rechazan antes de un round trip de la herramienta y se hace cumplir la exclusividad entre name y resumeFromRunId.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
shell
Área
cli
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Tranquilo
Claridad
Bastante claro
Aptitud para principiantes
48/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.