github / github/copilot-sdk

`subagent.started` event sometimes reports "General Purpose Agent" instead of registered `displayName` (intermittent, same code/commit)

Offen
#1,277 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Java
Sterne
10.5k
Forks
1.5k
Ø Merge
1 T. 11 Std.
Gemergte PRs (30 T.)
128

Beschreibung

### Summary

When the orchestrator dispatches custom agents via `task`, the `subagent.started` event's `agentDisplayName` field sometimes correctly reports the registered `displayName` (e.g., `"Tenant Metrics"`, `"Outlier Detector"`) and sometimes reports `"General Purpose Agent"`. The behavior is non-deterministic across runs on identical code.

### Repro

```ts
const session = await client.createSession({
customAgents: [
{ name: "tenant-metrics", displayName: "Tenant Metrics", prompt: "..." },
{ name: "outlier-detector", displayName: "Outlier Detector", prompt: "..." },
/* ... 3 more named custom agents ... */
],
});

session.on("subagent.started", (evt) => console.log(evt.data.agentDisplayName));
await session.sendAndWait({ prompt: "Dispatch all five custom agents to analyze..." });
```

Observed across multiple runs of the same code, same commit, same SDK/CLI:
- Run 1: prints `"Tenant Metrics"`, `"Outlier Detector"`, etc. correctly
- Run 2: prints `"General Purpose Agent"` for all 5 agents

### Expected

`agentDisplayName` consistently matches `customAgents[].displayName` (or, when not set, falls back to `customAgents[].name`).

### Actual

Non-deterministic. The intermittency is the larger concern — it suggests state leaking across runs or initialization-order sensitivity in the CLI's agent registration path.

### Evidence (SDK source — limited)

`nodejs/src/generated/session-events.ts`: `SubagentStartedData` includes `agentDisplayName: string`. The SDK never populates this field — the event arrives over RPC from the CLI. The bug is in the CLI binary, which is not source-readable.

### Consumer impact

- Dashboards and reports show `"General Purpose Agent" × N` instead of distinguishable names.
- Per-agent metrics rollups (timings, token usage, cost) keyed by `agentDisplayName` collapse to a single bucket.

### Suggested fix

- Propagate the custom agent's `displayName` (or the dispatching `task` call's `name` field) to `subagent.started` events consistently.
- **Separately:** root-cause the intermittency. Even if the display-name propagation lands, an intermittent CLI is a debugging hazard.

### Related

- #1110 — `agentId` missing from `SessionEvent` in .NET, Go, and Python SDKs. Adjacent: another `SessionEvent` field that's not being populated reliably across SDKs/runtimes.

### Environment

```
- SDK: @github/copilot-sdk@0.3.0 (also observed on older versions)
- CLI: @github/copilot@1.0.45 (also observed on 1.0.14+)
- Node: 22 LTS
- OS: Windows 11
- Model: claude-sonnet-4-6
```

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.