Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

.NET: runtime logs forwarding session.idle, but SDK callback never delivers it

Abierto
#2,008 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
42/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
csharp

Línea de trabajo

No se nombran archivos específicos. Empieza rastreando la suscripción de sesión de .NET y la ruta de despacho FIFO; después, inspecciona el contrato de ejecución propuesto de session.waitForIdle junto con el manejo de session.idle y GetEventsAsync. La tarea estará terminada cuando una prueba de regresión demuestre que la finalización espera a todos los eventos anteriores, gestiona las notificaciones de inactividad descartadas, propaga los fallos y admite la cancelación.

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

Descripción

bug waiting on response

Summary

Visual Studio can remain indefinitely in the running state after the Copilot CLI has completed a response.

The CLI verbose log shows that it forwarded the terminal, ephemeral session.idle event. The .NET SDK subscription receives the preceding events, including the final assistant.turn_end, but never receives SessionIdleEvent.

Because session.idle is ephemeral, it cannot be recovered later through GetEventsAsync(). The client therefore has no authoritative completion signal and continues waiting.

Environment

  • GitHub.Copilot.SDK: 1.0.1
  • Copilot CLI runtime: 1.0.61
  • Windows ARM64
  • Visual Studio Agent and Agent (Preview) modes

The current SDK 1.0.7 still does not expose a durable idle wait or event-dispatch flush API.

Observed behavior

The CLI log ends with:

Forwarding event ... assistant.turn_end
Forwarding event ... session.idle (ephemeral)

The .NET subscriber observes assistant.turn_end, but not session.idle. The operation remains active even though the runtime has finished.

The absence of session.idle from events.jsonl is expected because the event is ephemeral; it does not explain why the live subscriber missed it.

Why assistant.turn_end is insufficient

In multi-turn tool workflows, an intermediate assistant.turn_end can be followed immediately by another assistant.turn_start. Completion also needs to account for sub-agents, attached shells, queued messages, and follow-up notification turns.

Requested fix

Please provide an authoritative completion contract owned by the runtime/SDK, for example:

await session.WaitForIdleAsync(cancellationToken);

It should:

  1. Wait for turns, sub-agents, attached shells, queued work, and follow-up turns to settle.
  2. Resolve only when the runtime is fully idle.
  3. Ensure preceding session events have crossed the .NET SDK FIFO dispatch queue.
  4. Surface session errors and transport failures.
  5. Remain correct if the live session.idle notification is dropped.
  6. Support cancellation without leaving an orphaned waiter.

An equivalent session.waitForIdle runtime RPC combined with an SDK dispatch barrier would also work.

Regression test

Add a .NET test where a multi-turn response completes, the live session.idle notification is deliberately dropped, and the completion wait still resolves only after all preceding assistant and tool events have been delivered.

Related

  • #794 - identifies missing session.idle and silent notification drops, but its proposed fallback did not ship
  • #558 - timeout waiting for session.idle
  • #791 - serialized FIFO event dispatch in the .NET SDK
  • #927 - ephemeral events are intentionally unavailable through replay
  • #1275 - assistant.turn_end alone is not a completion signal
Lenguaje dominante
Java
Estrellas
10.5k
Forks
1.5k
Merge medio
1 d 9 h
PR fusionados (30 d)
130

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.

Más de github/copilot-sdk

Todos los issues de github/copilot-sdk

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.