github / github/copilot-cli

Feature: Emit a dedicated event when user switches to a custom agent via /agent

Abierto
#2,838 0 comentarios 0 reacciones 0 asignados Ver en GitHub
area:agents area:sessions
Lenguaje dominante
Shell
Estrellas
11.2k
Forks
1.9k
Merge medio
14 h 16 min
PR fusionados (30 d)
6

Descripción

## Summary

When a user invokes `/agent ` to switch to a custom agent at the session root, no dedicated event is emitted. The only signal that an agent switch occurred is the `` block silently prepended to `user.message.data.transformedContent`. This makes it difficult for downstream tooling to reliably track which custom agent is active.

## Current behavior

- `/agent review-pr-comments` rewrites the next user message by prepending `...` into `transformedContent`
- There is no `session.agent_changed` or `session.agent_invoked` event in `events.jsonl`
- `subagent.selected` exists but fires rarely (21 events across 920+ sessions in one user's history) and doesn't appear to be the canonical marker for root-level `/agent` switches
- `session.mode_changed` and `session.model_change` exist for other session-level state changes, but agents have no equivalent

## Impact

- **Session analytics**: Tools like [copilot-session-tools](https://github.com/Arithmomaniac/copilot-session-tools) that enrich `events.jsonl` into queryable databases cannot reliably count or filter by which custom agent was used. The only workaround is parsing `` blocks out of `transformedContent`, which is fragile and undocumented.
- **Skill auditing**: When auditing skill/agent effectiveness, the lack of a clean event means agent usage counts are dramatically undercounted (in one audit, `review-pr-comments` showed 0 dispatches via `task` tool but actually had 390 root-level invocations hidden in `transformedContent`).
- **Observability**: Users and platform teams can't answer "which custom agents are actually being used?" without deep parsing of message content.

## Proposed solution

Emit a new event when `/agent ` is invoked at the session root:

```jsonl
{"type": "session.agent_invoked", "agentName": "review-pr-comments", "agentSource": "user", "timestamp": "..."}
```

Fields:
- `agentName`: The agent identifier as it appears in the `.agent.md` filename
- `agentSource`: `"user"` for custom agents in `~/.copilot/agents/`, `"project"` for repo-level agents, `"builtin"` for platform agents

This would parallel the existing `session.mode_changed` and `session.model_change` events.

## Workaround (current)

Parse `transformedContent` for `` blocks and extract the agent name — but this is fragile, undocumented, and requires access to the full message payload rather than just the event stream.

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Comienza localizando el manejo del comando /agent en el nivel raíz y los emisores de eventos existentes para session.mode_changed y session.model_change. Añade el evento propuesto session.agent_invoked con agentName, agentSource y timestamp, y verifica después que invocar /agent en la raíz de la sesión produzca el evento en events.jsonl sin depender del análisis de transformedContent.

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

Evaluación

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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.