Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

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

Open
#1,277 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
38/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Quiet
Tech stack
node.js, typescript
Domain
api

Research direction

Start with nodejs/src/generated/session-events.ts and verify the SubagentStartedData contract, then reproduce the createSession/customAgents/task flow with the subagent.started listener described in the issue. The CLI binary is not source-readable, so confirm whether the SDK can add coverage or whether the fix must be escalated to the CLI; done means agentDisplayName consistently matches displayName or name across repeated runs.

Written by the indexing model from the issue text.

Description

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
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
Dominant language
Java
Stars
10.5k
Forks
1.5k
Avg merge
1d 9h
Merged PRs (30d)
130

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from github/copilot-sdk

All issues in github/copilot-sdk

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.