Multi-platform SDK for integrating GitHub Copilot Agent into apps and services
This report presents the forensic synthetic code analysis of github/copilot-sdk, a Java project with 9,504 GitHub stars. SynthScan v2.0 examined 408,875 lines of code across 1446 source files, recording 2615 pattern matches distributed across 22 syntactic categories. The overall adjusted score of 8.1 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 2615 distinct pattern matches across 22 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …dejs/test/e2e/copilot_request_cancel_error.e2e.test.ts | 93 | class ThrowingRequestHandler extends CopilotRequestHandler { | CODE |
| LOW | …dejs/test/e2e/copilot_request_cancel_error.e2e.test.ts | 109 | class CancellingRequestHandler extends CopilotRequestHandler { | CODE |
| LOW | nodejs/test/e2e/permissions.e2e.test.ts | 640 | async function createUniqueWorkDirectory(baseDir: string, prefix: string): Promise<string> { | CODE |
| LOW | nodejs/test/e2e/rpc_server_misc.e2e.test.ts | 39 | async function createIsolatedStartedClient( | CODE |
| LOW | nodejs/test/e2e/subagent_hooks.e2e.test.ts | 25 | class RecordingRequestHandler extends CopilotRequestHandler { | CODE |
| LOW | nodejs/test/e2e/subagent_hooks.e2e.test.ts | 52 | function expectSubagentRequestMetadata(records: RequestRecord[]): void { | CODE |
| LOW | nodejs/test/e2e/rpc_server.e2e.test.ts | 16 | function createAuthenticatedClient(token: string): CopilotClient { | CODE |
| LOW | nodejs/test/e2e/rpc_server.e2e.test.ts | 50 | async function configureAuthenticatedUser( | CODE |
| LOW | nodejs/test/e2e/rpc_server.e2e.test.ts | 89 | function createUniqueWorkDirectory(prefix: string): string { | CODE |
| LOW | nodejs/test/e2e/session_fs.e2e.test.ts | 531 | function createTestSessionFsHandler( | CODE |
| LOW | nodejs/test/e2e/copilot_request_session_id.e2e.test.ts | 41 | class RecordingRequestHandler extends CopilotRequestHandler { | CODE |
| LOW | nodejs/test/e2e/copilot_request_session_id.e2e.test.ts | 103 | function buildNonInferenceResponse(url: string): Response { | CODE |
| LOW | nodejs/test/e2e/mode_empty.e2e.test.ts | 39 | async function getSystemMessageSentToLLM(): Promise<string> { | CODE |
| LOW | nodejs/test/e2e/pending_work_resume.e2e.test.ts | 60 | async function waitForPendingPermissionRequestId(session: CopilotSession): Promise<string> { | CODE |
| LOW | nodejs/test/e2e/pending_work_resume.e2e.test.ts | 74 | function waitForExternalToolRequests( | CODE |
| LOW | nodejs/test/e2e/byok_bearer_token_provider.e2e.test.ts | 52 | class CapturingRequestHandler extends CopilotRequestHandler { | CODE |
| LOW | nodejs/test/e2e/rpc_shell_user_requested.e2e.test.ts | 28 | function createMarkerThenSleepCommand(markerPath: string, seconds: number): string { | CODE |
| LOW | nodejs/test/e2e/rpc_server_plugins.e2e.test.ts | 41 | async function createIsolatedStartedClient(): Promise<{ | CODE |
| LOW | nodejs/test/e2e/rpc_server_plugins.e2e.test.ts | 80 | function createLocalMarketplaceFixture(): string { | CODE |
| LOW | nodejs/test/e2e/rpc_server_plugins.e2e.test.ts | 105 | function createDirectPluginFixture(): string { | CODE |
| LOW | nodejs/test/e2e/rpc_session_state_extras.e2e.test.ts | 29 | function createAuthenticatedClient(token: string): CopilotClient { | CODE |
| LOW | nodejs/test/e2e/rpc_session_state_extras.e2e.test.ts | 38 | async function configureAuthenticatedUser(token: string): Promise<void> { | CODE |
| LOW | nodejs/test/e2e/session_config.e2e.test.ts | 235 | function assertSessionLimitsStatus( | CODE |
| LOW | nodejs/test/e2e/session_config.e2e.test.ts | 275 | class RecordingRequestHandler extends CopilotRequestHandler { | CODE |
| LOW | nodejs/test/e2e/session_config.e2e.test.ts | 318 | function anthropicMessageStreamBody(text: string): string { | CODE |
| LOW | nodejs/test/e2e/session_config.e2e.test.ts | 364 | function buildNonInferenceResponse(url: string): Response { | CODE |
| LOW | nodejs/test/e2e/session_config.e2e.test.ts | 453 | function assertAnthropicDocumentCitationsEnabled(requestBody: string) { | CODE |
| LOW | nodejs/test/e2e/session_fs_sqlite.e2e.test.ts | 138 | function createTestSessionFsHandlerWithSqlite( | CODE |
| LOW | nodejs/test/e2e/session_fs_sqlite.e2e.test.ts | 146 | function getOrCreateDb(): DatabaseSync { | CODE |
| LOW | nodejs/src/copilotRequestHandler.ts | 240 | export class CopilotRequestHandler { | CODE |
| LOW | nodejs/src/copilotRequestHandler.ts | 341 | export function createCopilotRequestAdapter( | CODE |
| LOW | nodejs/src/copilotRequestHandler.ts | 347 | function getOrCreate(requestId: string): CopilotRequestExchange { | CODE |
| LOW | nodejs/src/client.ts | 188 | function extractBearerTokenProviders( | CODE |
| LOW | nodejs/src/client.ts | 309 | function extractTransformCallbacks(systemMessage: SessionConfig["systemMessage"]): { | CODE |
| LOW | nodejs/src/client.ts | 357 | function getCliPlatformPackageNames(): string[] { | CODE |
| LOW | test/harness/certUtils.ts | 50 | export function createSecureContextForHost( | CODE |
| LOW | test/harness/replayingCapiProxy.ts | 588 | async function exitWithNoMatchingRequestError( | CODE |
| LOW | test/harness/replayingCapiProxy.ts | 638 | async function findSavedChatCompletionResponse( | CODE |
| LOW | test/harness/replayingCapiProxy.ts | 675 | async function findSavedChatCompletionError( | CODE |
| LOW | test/harness/replayingCapiProxy.ts | 902 | function compareToolResultMessages( | CODE |
| LOW | test/harness/replayingCapiProxy.ts | 918 | function parseNormalizedToolCallId(id?: string) { | CODE |
| LOW | test/harness/replayingCapiProxy.ts | 930 | function removePrefixConversations( | CODE |
| LOW | test/harness/replayingCapiProxy.ts | 987 | function transformOpenAIRequestMessage( | CODE |
| LOW | test/harness/replayingCapiProxy.ts | 1069 | function normalizeStoredUserMessages(conversations: NormalizedConversation[]) { | CODE |
| LOW | test/harness/replayingCapiProxy.ts | 1082 | function normalizeSkillContextFrontmatter(content: string): string { | CODE |
| LOW | test/harness/replayingCapiProxy.ts | 1090 | function normalizeLargeOutputFilepaths(result: string): string { | CODE |
| LOW | test/harness/replayingCapiProxy.ts | 1103 | function normalizeShellExitMarkers(result: string): string { | CODE |
| LOW | test/harness/replayingCapiProxy.ts | 1166 | function normalizeReadAgentTimings(result: string): string { | CODE |
| LOW | test/harness/replayingCapiProxy.ts | 1190 | function normalizeShellToolFamilyNames(text: string): string { | CODE |
| LOW | test/harness/replayingCapiProxy.ts | 1202 | function normalizeAvailableToolNames(result: string): string { | CODE |
| LOW | test/harness/replayingCapiProxy.ts | 1211 | function transformOpenAIResponseChoice( | CODE |
| LOW | test/harness/replayingCapiProxy.ts | 1245 | function normalizeToolCallArguments(args: string): string { | CODE |
| LOW | test/harness/replayingCapiProxy.ts | 1293 | function findAssistantIndexAfterPrefix( | CODE |
| LOW | test/harness/replayingCapiProxy.ts | 1411 | function convertToStreamingResponseChunks( | CODE |
| LOW | python/test_rpc_timeout.py | 32 | async def test_default_timeout_not_forwarded(self): | CODE |
| LOW | python/test_rpc_timeout.py | 44 | async def test_custom_timeout_forwarded(self): | CODE |
| LOW⚡ | python/test_rpc_timeout.py | 55 | async def test_timeout_on_session_params_method(self): | CODE |
| LOW⚡ | python/test_rpc_timeout.py | 68 | async def test_timeout_on_session_no_params_method(self): | CODE |
| LOW⚡ | python/test_rpc_timeout.py | 79 | async def test_default_timeout_on_session_no_params_method(self): | CODE |
| LOW⚡ | python/test_rpc_timeout.py | 92 | async def test_timeout_on_server_params_method(self): | CODE |
| 940 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | python/test_rpc_timeout.py | 29 | # ── session-scoped, with params ────────────────────────────────── | COMMENT |
| MEDIUM⚡ | python/test_rpc_timeout.py | 65 | # ── session-scoped, no params ──────────────────────────────────── | COMMENT |
| MEDIUM⚡ | python/test_rpc_timeout.py | 89 | # ── server-scoped, with params ───────────────────────────────────── | COMMENT |
| MEDIUM⚡ | python/test_rpc_timeout.py | 113 | # ── server-scoped, no params ───────────────────────────────────── | COMMENT |
| MEDIUM⚡ | python/test_commands_and_elicitation.py | 43 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | python/test_commands_and_elicitation.py | 45 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | python/test_commands_and_elicitation.py | 310 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | python/test_commands_and_elicitation.py | 312 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | python/test_commands_and_elicitation.py | 402 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | python/test_commands_and_elicitation.py | 404 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | python/test_commands_and_elicitation.py | 778 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | python/test_commands_and_elicitation.py | 780 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | python/copilot/copilot_request_handler.py | 494 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/copilot/copilot_request_handler.py | 496 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/copilot/copilot_request_handler.py | 607 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/copilot/copilot_request_handler.py | 609 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/copilot/copilot_request_handler.py | 1 | # -------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/copilot/copilot_request_handler.py | 3 | # -------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/copilot/copilot_request_handler.py | 337 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/copilot/copilot_request_handler.py | 339 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/copilot/copilot_request_handler.py | 662 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/copilot/copilot_request_handler.py | 664 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/copilot/session_fs_provider.py | 1 | # -------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/copilot/session_fs_provider.py | 3 | # -------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/copilot/client.py | 121 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | python/copilot/client.py | 123 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/client.py | 523 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/client.py | 525 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/client.py | 653 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/client.py | 655 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/client.py | 875 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/client.py | 877 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/client.py | 995 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/client.py | 997 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 102 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 104 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 184 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 186 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 238 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 240 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 338 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 340 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 379 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 381 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 445 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 447 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 509 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 511 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 548 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 550 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 575 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 577 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 619 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 621 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 651 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 653 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 804 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 806 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 1033 | # ============================================================================ | COMMENT |
| MEDIUM | python/copilot/session.py | 1035 | # ============================================================================ | COMMENT |
| 178 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | nodejs/README.md | 881 | // "write" — writing or editing a file | COMMENT |
| LOW | nodejs/test/e2e/skills.e2e.test.ts | 81 | COMMENT | |
| LOW | nodejs/src/client.ts | 941 | * } | COMMENT |
| LOW | go/copilot_request_handler.go | 61 | URL string | COMMENT |
| LOW | go/copilot_request_handler.go | 101 | COMMENT | |
| LOW | go/copilot_request_handler.go | 121 | // into the runtime response. A [CopilotWebSocketHandler] receives one in | COMMENT |
| LOW | go/types.go | 61 | // URIConnection connects to an already-running runtime at the given URL. | COMMENT |
| LOW | go/types.go | 81 | // If empty, inherits the current process's working directory. | COMMENT |
| LOW | go/types.go | 101 | // variable. This takes priority over other authentication methods. | COMMENT |
| LOW | go/types.go | 121 | // the runtime routes its model-layer HTTP and WebSocket traffic through | COMMENT |
| LOW | go/types.go | 141 | // directory are accessible from GitHub web and mobile. | COMMENT |
| LOW | go/types.go | 181 | // ExporterType is the exporter backend type: "otlp-http" or "file". | COMMENT |
| LOW | go/types.go | 221 | // Known system message section identifiers for the "customize" mode. | COMMENT |
| LOW | go/types.go | 261 | // SectionActionAppend appends to existing section content. | COMMENT |
| LOW | go/types.go | 301 | // Content is the complete system message (required) | COMMENT |
| LOW | go/types.go | 901 | // Model is the model identifier for this agent (e.g. "claude-haiku-4.5"). | COMMENT |
| LOW | go/types.go | 941 | // Enabled controls whether large output handling is enabled. Default: true. | COMMENT |
| LOW | go/types.go | 981 | COMMENT | |
| LOW | go/types.go | 1001 | // ConfigDirectory overrides the default configuration directory location. | COMMENT |
| LOW | go/types.go | 1021 | // to include in the system prompt. Allows hosts to inject organization-specific | COMMENT |
| LOW | go/types.go | 1041 | // and discovered skill directories). When false, no skills are loaded regardless | COMMENT |
| LOW | go/types.go | 1061 | // When nil, permission requests are surfaced as events and left pending for the | COMMENT |
| LOW | go/types.go | 1081 | // event stream. When true, streaming delta events from sub-agents (e.g., | COMMENT |
| LOW | go/types.go | 1101 | // surface and may change or be removed in future SDK or CLI releases. | COMMENT |
| LOW | go/types.go | 1121 | // custom instruction files. See also [ClientOptions.Mode] = [ModeEmpty]. | COMMENT |
| LOW | go/types.go | 1141 | // CustomAgents configures custom agents for the session | COMMENT |
| LOW | go/types.go | 1161 | // InfiniteSessions configures infinite sessions for persistent workspaces and automatic compaction. | COMMENT |
| LOW | go/types.go | 1181 | // CreateSessionFSProvider supplies a handler for session filesystem operations. | COMMENT |
| LOW | go/types.go | 1201 | // surface (SEP-1865) and may change or be removed in a future release. | COMMENT |
| LOW | go/types.go | 1221 | // GitHubToken is an optional per-session GitHub token used for authentication. | COMMENT |
| LOW | go/types.go | 1241 | RequestExtensions *bool | COMMENT |
| LOW | go/types.go | 1261 | // it onto telemetry and the CAPI request header. When absent, the session | COMMENT |
| LOW | go/types.go | 1301 | COMMENT | |
| LOW | go/types.go | 1461 | // ResumeSessionConfig configures options when resuming a session | COMMENT |
| LOW | go/types.go | 1481 | // be selected or invoked unless a custom agent with the same name is | COMMENT |
| LOW | go/types.go | 1501 | // When false, disables session telemetry. When nil (the default) or true, | COMMENT |
| LOW | go/types.go | 1521 | // defined locally. See also [ClientOptions.Mode] = [ModeEmpty]. | COMMENT |
| LOW | go/types.go | 1541 | ContextTier ContextTier | COMMENT |
| LOW | go/types.go | 1561 | // explicit values taking precedence on name collision. | COMMENT |
| LOW | go/types.go | 1581 | // .github/hooks/. This is separate from the Hooks callback parameter which | COMMENT |
| LOW | go/types.go | 1601 | // non-streaming sub-agent events and subagent.* lifecycle events are forwarded; | COMMENT |
| LOW | go/types.go | 1621 | // Treated as an explicit opt-in: plugin agents and rules load even when | COMMENT |
| LOW | go/types.go | 1641 | // GitHubToken is an optional per-session GitHub token used for authentication. | COMMENT |
| LOW | go/types.go | 1661 | // OnEvent is an optional event handler registered before the session.resume RPC | COMMENT |
| LOW | go/types.go | 1681 | // Experimental: EnableMCPApps is part of an experimental wire-protocol | COMMENT |
| LOW | go/types.go | 1701 | ExtensionInfo *ExtensionInfo | COMMENT |
| LOW | go/types.go | 1721 | // | COMMENT |
| LOW | go/types.go | 1741 | COMMENT | |
| LOW | go/types.go | 1761 | // Set "websockets" to deliver Responses API requests over a persistent WebSocket | COMMENT |
| LOW | go/types.go | 1781 | // WireModel is the model name sent to the provider API for inference. Use | COMMENT |
| LOW | go/types.go | 1801 | // | COMMENT |
| LOW | go/types.go | 1821 | }{wire: wire(p)} | COMMENT |
| LOW | go/types.go | 1841 | EnableWebSocketResponses *bool `json:"enableWebSocketResponses,omitempty"` | COMMENT |
| LOW | go/types.go | 1861 | type NamedProviderConfig struct { | COMMENT |
| LOW | go/types.go | 1881 | // (managed-identity / on-demand auth). When set, the SDK strips the callback | COMMENT |
| LOW | go/session.go | 21 | type sessionHandler struct { | COMMENT |
| LOW | go/session.go | 41 | // log.Fatal(err) | COMMENT |
| LOW | go/session.go | 381 | go s.processEvents() | COMMENT |
| LOW | go/session.go | 441 | // SendAndWait sends a message to this session and waits until the session becomes idle. | COMMENT |
| LOW | go/session.go | 521 | // SendPromptAndWait is a convenience wrapper for [Session.SendAndWait] that | COMMENT |
| 709 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | python/e2e/test_rpc_server_e2e.py | 562 | await ctx.client.rpc.skills.config.set_disabled_skills( | CODE |
| CRITICAL | python/e2e/test_rpc_server_e2e.py | 572 | await ctx.client.rpc.skills.config.set_disabled_skills( | CODE |
| CRITICAL⚡ | python/e2e/test_rpc_server_misc_e2e.py | 81 | await ctx.client.rpc.user.settings.reload() | CODE |
| CRITICAL⚡ | python/e2e/test_rpc_mcp_config_e2e.py | 43 | initial = await ctx.client.rpc.mcp.config.list() | CODE |
| CRITICAL⚡ | python/e2e/test_rpc_mcp_config_e2e.py | 47 | await ctx.client.rpc.mcp.config.add( | CODE |
| CRITICAL⚡ | python/e2e/test_rpc_mcp_config_e2e.py | 50 | after_add = await ctx.client.rpc.mcp.config.list() | CODE |
| CRITICAL⚡ | python/e2e/test_rpc_mcp_config_e2e.py | 53 | await ctx.client.rpc.mcp.config.update( | CODE |
| CRITICAL⚡ | python/e2e/test_rpc_mcp_config_e2e.py | 56 | after_update = await ctx.client.rpc.mcp.config.list() | CODE |
| CRITICAL⚡ | python/e2e/test_rpc_mcp_config_e2e.py | 61 | await ctx.client.rpc.mcp.config.disable(MCPConfigDisableRequest(names=[server_name])) | CODE |
| CRITICAL⚡ | python/e2e/test_rpc_mcp_config_e2e.py | 62 | await ctx.client.rpc.mcp.config.enable(MCPConfigEnableRequest(names=[server_name])) | CODE |
| CRITICAL⚡ | python/e2e/test_rpc_mcp_config_e2e.py | 64 | await ctx.client.rpc.mcp.config.remove(MCPConfigRemoveRequest(name=server_name)) | CODE |
| CRITICAL⚡ | python/e2e/test_rpc_mcp_config_e2e.py | 66 | after_remove = await ctx.client.rpc.mcp.config.list() | CODE |
| CRITICAL⚡ | python/e2e/test_rpc_mcp_config_e2e.py | 94 | await ctx.client.rpc.mcp.config.add( | CODE |
| CRITICAL⚡ | python/e2e/test_rpc_mcp_config_e2e.py | 97 | after_add = await ctx.client.rpc.mcp.config.list() | CODE |
| CRITICAL⚡ | python/e2e/test_rpc_mcp_config_e2e.py | 107 | await ctx.client.rpc.mcp.config.update( | CODE |
| CRITICAL⚡ | python/e2e/test_rpc_mcp_config_e2e.py | 110 | after_update = await ctx.client.rpc.mcp.config.list() | CODE |
| CRITICAL⚡ | python/e2e/test_rpc_mcp_config_e2e.py | 119 | await ctx.client.rpc.mcp.config.remove(MCPConfigRemoveRequest(name=server_name)) | CODE |
| CRITICAL⚡ | python/e2e/test_rpc_mcp_config_e2e.py | 121 | after_remove = await ctx.client.rpc.mcp.config.list() | CODE |
| CRITICAL | java/docs/adr/adr-005-tool-definition.md | 163 | `javax.lang.model.element.VariableElement.getSimpleName()` always returns the real parameter name at compile time, regar | CODE |
| CRITICAL | java/scripts/codegen/java.ts | 2112 | lines.push(` mapper.registerModule(new com.fasterxml.jackson.datatype.jsr310.JavaTimeModule());`); | CODE |
| CRITICAL | …/src/test/java/com/github/copilot/RpcWrappersTest.java | 115 | var params = new com.github.copilot.generated.rpc.PingParams(null); | STRING |
| CRITICAL | …/src/test/java/com/github/copilot/RpcWrappersTest.java | 421 | var params = new com.github.copilot.generated.rpc.SessionMcpAppsCallToolParams(null, "my-server", "my-tool", | STRING |
| CRITICAL | …/src/test/java/com/github/copilot/RpcWrappersTest.java | 434 | var params = new com.github.copilot.generated.rpc.SessionMcpAppsCallToolParams(null, "server1", "tool1", null, | STRING |
| CRITICAL | …/src/test/java/com/github/copilot/RpcWrappersTest.java | 454 | var params = new com.github.copilot.generated.rpc.SessionMcpAppsCallToolParams(null, "echo-server", "echo", | STRING |
| CRITICAL | …/src/test/java/com/github/copilot/PermissionsTest.java | 420 | .setApproveAll(new com.github.copilot.generated.rpc.SessionPermissionsSetApproveAllParams( | CODE |
| CRITICAL | …a/src/main/java/com/github/copilot/CopilotSession.java | 2044 | : com.github.copilot.generated.rpc.ReasoningSummary.fromValue(reasoningSummary); | CODE |
| CRITICAL | …src/main/java/com/github/copilot/rpc/package-info.java | 94 | @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(value = "EI_EXPOSE_REP2", justification = "DTOs for JSON deserializa | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/test_cli_download.py | 3 | CODE | |
| LOW | python/test_canvas.py | 3 | CODE | |
| LOW | python/test_tool_set.py | 3 | CODE | |
| LOW | python/test_telemetry.py | 3 | CODE | |
| LOW | python/copilot/_cli_download.py | 17 | CODE | |
| LOW | python/copilot/copilot_request_handler.py | 22 | CODE | |
| LOW | python/copilot/_telemetry.py | 3 | CODE | |
| LOW | python/copilot/session_fs_provider.py | 17 | CODE | |
| LOW | python/copilot/client.py | 15 | CODE | |
| LOW | python/copilot/client.py | 66 | CODE | |
| LOW | python/copilot/tools.py | 8 | CODE | |
| LOW | python/copilot/_diagnostics.py | 3 | CODE | |
| LOW | python/copilot/session.py | 9 | CODE | |
| LOW | python/copilot/session.py | 97 | CODE | |
| LOW | python/copilot/_mode.py | 10 | CODE | |
| LOW | python/copilot/__init__.py | 10 | CODE | |
| LOW | python/copilot/__init__.py | 13 | CODE | |
| LOW | python/copilot/__init__.py | 14 | CODE | |
| LOW | python/copilot/__init__.py | 14 | CODE | |
| LOW | python/copilot/__init__.py | 14 | CODE | |
| LOW | python/copilot/__init__.py | 19 | CODE | |
| LOW | python/copilot/__init__.py | 19 | CODE | |
| LOW | python/copilot/__init__.py | 19 | CODE | |
| LOW | python/copilot/__init__.py | 19 | CODE | |
| LOW | python/copilot/__init__.py | 19 | CODE | |
| LOW | python/copilot/__init__.py | 19 | CODE | |
| LOW | python/copilot/__init__.py | 19 | CODE | |
| LOW | python/copilot/__init__.py | 19 | CODE | |
| LOW | python/copilot/__init__.py | 19 | CODE | |
| LOW | python/copilot/__init__.py | 19 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| LOW | python/copilot/__init__.py | 31 | CODE | |
| 177 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | go/types.go | 297 | // Removes all SDK guardrails including security restrictions. | COMMENT |
| MEDIUM | go/rpc/zrpc.go | 4068 | // sessions (which don't run a local agentic loop). Reflects an in-flight turn or background | COMMENT |
| MEDIUM | go/rpc/zrpc.go | 7107 | // If true, await completion of the agentic loop for this turn before returning. Defaults to | COMMENT |
| MEDIUM | go/rpc/zrpc.go | 7161 | // If true, await completion of the agentic loop for this message before returning. Defaults | COMMENT |
| MEDIUM | go/rpc/zsession_events.go | 922 | // True when the preceding agentic loop was cancelled via abort signal | COMMENT |
| MEDIUM | go/rpc/zsession_events.go | 931 | // True when the preceding agentic loop was cancelled via abort signal | COMMENT |
| MEDIUM | go/rpc/zsession_events.go | 1108 | // How this message was delivered to the agentic loop relative to loop state (idle-start vs. steering/queued while busy | COMMENT |
| MEDIUM | go/rpc/zsession_events.go | 1454 | // When true, tool calls and permission requests left in flight by the previous session lifetime remain pending after r | COMMENT |
| MEDIUM | go/rpc/zsession_events.go | 1876 | // Identifier for this turn within the agentic loop, typically a stringified turn number | COMMENT |
| MEDIUM | go/rpc/zsession_events.go | 2490 | // The extension management operation (scaffold, reload) | COMMENT |
| MEDIUM | go/rpc/zsession_events.go | 2706 | // The extension management operation (scaffold, reload) | COMMENT |
| MEDIUM | go/rpc/zsession_events.go | 4173 | // How this user message was delivered to the agentic loop, relative to whether the loop was already running. This is th | COMMENT |
| MEDIUM | docs/features/custom-agents.md | 1 | # Custom agents and sub-agent orchestration | COMMENT |
| MEDIUM | docs/features/streaming-events.md | 763 | ## Quick reference: agentic turn flow | COMMENT |
| MEDIUM | docs/integrations/microsoft-agent-framework.md | 625 | ### Handle errors at the orchestration level | COMMENT |
| MEDIUM | dotnet/src/Generated/SessionEvents.cs | 1667 | /// <summary>When true, tool calls and permission requests left in flight by the previous session lifetime remain pe | COMMENT |
| MEDIUM | dotnet/src/Generated/SessionEvents.cs | 1779 | /// <summary>True when the preceding agentic loop was cancelled via abort signal.</summary> | COMMENT |
| MEDIUM | dotnet/src/Generated/SessionEvents.cs | 2443 | /// <summary>How this message was delivered to the agentic loop relative to loop state (idle-start vs. steering/queu | COMMENT |
| MEDIUM | dotnet/src/Generated/SessionEvents.cs | 2502 | /// <summary>Identifier for this turn within the agentic loop, typically a stringified turn number.</summary> | COMMENT |
| MEDIUM | dotnet/src/Generated/SessionEvents.cs | 2721 | /// <summary>True when the preceding agentic loop was cancelled via abort signal.</summary> | COMMENT |
| MEDIUM | dotnet/src/Generated/SessionEvents.cs | 6730 | /// <summary>The extension management operation (scaffold, reload).</summary> | COMMENT |
| MEDIUM | dotnet/src/Generated/SessionEvents.cs | 7148 | /// <summary>The extension management operation (scaffold, reload).</summary> | COMMENT |
| MEDIUM | dotnet/src/Generated/SessionEvents.cs | 8782 | /// <summary>How this user message was delivered to the agentic loop, relative to whether the loop was already running. | COMMENT |
| MEDIUM | .github/instructions/docs-style.instructions.md | 14 | * `# Custom agents and sub-agent orchestration` — not `# Custom Agents & Sub-Agent Orchestration` | COMMENT |
| MEDIUM | .github/workflows/java-codegen-check.yml | 20 | # the agentic fix workflow via gh workflow run. | COMMENT |
| MEDIUM | .github/workflows/java-codegen-check.yml | 25 | # push fails (Dependabot), the agentic fix workflow will handle pushing | COMMENT |
| MEDIUM | .github/agents/agentic-workflows.agent.md | 33 | - Configuration: https://github.com/github/gh-aw/blob/v0.64.2/.github/aw/github-agentic-workflows.md | CODE |
| MEDIUM⚡ | .github/agents/agentic-workflows.agent.md | 55 | **Prompt file**: https://github.com/github/gh-aw/blob/v0.64.2/.github/aw/create-agentic-workflow.md | CODE |
| MEDIUM⚡ | .github/agents/agentic-workflows.agent.md | 65 | **Prompt file**: https://github.com/github/gh-aw/blob/v0.64.2/.github/aw/update-agentic-workflow.md | CODE |
| MEDIUM⚡ | .github/agents/agentic-workflows.agent.md | 75 | **Prompt file**: https://github.com/github/gh-aw/blob/v0.64.2/.github/aw/debug-agentic-workflow.md | CODE |
| MEDIUM⚡ | .github/agents/agentic-workflows.agent.md | 85 | **Prompt file**: https://github.com/github/gh-aw/blob/v0.64.2/.github/aw/upgrade-agentic-workflows.md | CODE |
| MEDIUM | .github/agents/agentic-workflows.agent.md | 105 | **Prompt file**: https://github.com/github/gh-aw/blob/v0.64.2/.github/aw/create-shared-agentic-workflow.md | CODE |
| MEDIUM | .github/agents/agentic-workflows.agent.md | 144 | # Initialize repository for agentic workflows | COMMENT |
| MEDIUM | .github/agents/agentic-workflows.agent.md | 172 | - Always reference the instructions file at https://github.com/github/gh-aw/blob/v0.64.2/.github/aw/github-agentic-workf | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | python/copilot/_cli_download.py | 212 | Download the Copilot CLI binary and cache it. Args: version: CLI version to download. Defaults to the pinne | STRING |
| HIGH | python/copilot/client.py | 1540 | Parse CLI URL into host and port. Supports formats: "host:port", "http://host:port", "https://host:por | STRING |
| HIGH | python/copilot/client.py | 2003 | Create a new conversation session with the Copilot CLI. Sessions maintain conversation state, handle e | STRING |
| HIGH | python/copilot/client.py | 2674 | Resume an existing conversation session by its ID. This allows you to continue a previous conversation | STRING |
| HIGH | python/copilot/client.py | 3185 | Send a ping request to the server to verify connectivity. Args: message: Optional message | STRING |
| HIGH | python/copilot/client.py | 3299 | List all available sessions known to the server. Returns metadata about each session including ID, tim | STRING |
| HIGH | python/copilot/client.py | 3334 | Get metadata for a specific session by ID. This provides an efficient O(1) lookup of a single session' | STRING |
| HIGH | python/copilot/client.py | 4313 | Handle a user input request from the CLI server. Args: params: The user input request para | STRING |
| HIGH | python/copilot/client.py | 4373 | Handle a hooks invocation from the CLI server. Args: params: The hooks invocation paramete | STRING |
| HIGH | python/copilot/session.py | 669 | Shows a generic elicitation dialog with a custom schema. Args: params: Elicitation parameters inclu | STRING |
| HIGH | python/copilot/session.py | 693 | Shows a confirmation dialog and returns the user's boolean answer. Args: message: The question to a | STRING |
| HIGH | python/copilot/session.py | 727 | Shows a selection dialog with a list of options. Args: message: Instruction to show the user. | STRING |
| HIGH | python/copilot/session.py | 764 | Shows a text input dialog. Args: message: Instruction to show the user. options: Option | STRING |
| HIGH | python/copilot/session.py | 1527 | Send a message to this session. The message is processed asynchronously. Subscribe to events via :meth | STRING |
| HIGH | python/copilot/session.py | 1597 | Send a message to this session and wait until the session becomes idle. This is a convenience method t | STRING |
| HIGH | python/copilot/_jsonrpc.py | 146 | Send a JSON-RPC request and wait for the response. Args: method: Method name p | STRING |
| HIGH | python/copilot/_jsonrpc.py | 321 | Read exactly num_bytes, handling partial/short reads from pipes. Args: num_bytes: Number o | STRING |
| HIGH | python/e2e/testharness/helper.py | 22 | Wait for and return the final assistant message from a session turn. Args: session: The session to wai | STRING |
| HIGH | python/e2e/testharness/helper.py | 171 | Wait for and return the next event of a specific type from a session. Args: session: The session to wa | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | python/README.md | 925 | print(f"Error in {input['errorContext']}: {input['error']}") | STRING |
| MEDIUM | python/copilot/_cli_download.py | 553 | print(f"Error: {exc}", file=sys.stderr) | CODE |
| MEDIUM | python/copilot/copilot_request_handler.py | 209 | def _receive_loop(self) -> None: | CODE |
| MEDIUM | python/copilot/copilot_request_handler.py | 228 | def aclose(self) -> None: | CODE |
| LOW⚡ | python/copilot/copilot_request_handler.py | 602 | except Exception: | CODE |
| LOW | python/copilot/copilot_request_handler.py | 216 | except Exception as exc: | CODE |
| LOW | python/copilot/copilot_request_handler.py | 223 | except Exception: | CODE |
| LOW | python/copilot/copilot_request_handler.py | 237 | except Exception: | CODE |
| LOW | python/copilot/copilot_request_handler.py | 550 | except Exception as exc: | CODE |
| LOW⚡ | python/copilot/session_fs_provider.py | 171 | except Exception as exc: | CODE |
| LOW⚡ | python/copilot/session_fs_provider.py | 179 | except Exception as exc: | CODE |
| LOW⚡ | python/copilot/session_fs_provider.py | 186 | except Exception as exc: | CODE |
| LOW⚡ | python/copilot/session_fs_provider.py | 193 | except Exception: | CODE |
| LOW | python/copilot/session_fs_provider.py | 206 | except Exception as exc: | CODE |
| LOW⚡ | python/copilot/session_fs_provider.py | 226 | except Exception as exc: | CODE |
| LOW⚡ | python/copilot/session_fs_provider.py | 233 | except Exception as exc: | CODE |
| LOW⚡ | python/copilot/session_fs_provider.py | 241 | except Exception as exc: | CODE |
| LOW | python/copilot/session_fs_provider.py | 255 | except Exception as exc: | CODE |
| LOW | python/copilot/session_fs_provider.py | 262 | except Exception as exc: | CODE |
| LOW | python/copilot/session_fs_provider.py | 303 | except Exception: | CODE |
| LOW⚡ | python/copilot/client.py | 1895 | except Exception: | CODE |
| LOW⚡ | python/copilot/client.py | 1903 | except Exception: | CODE |
| LOW⚡ | python/copilot/client.py | 1912 | except Exception: | CODE |
| LOW | python/copilot/client.py | 492 | except Exception: | CODE |
| LOW | python/copilot/client.py | 1694 | except Exception as e: | CODE |
| LOW | python/copilot/client.py | 1750 | except Exception as e: | CODE |
| LOW | python/copilot/client.py | 1774 | except Exception as e: | CODE |
| LOW | python/copilot/client.py | 1800 | except Exception: | CODE |
| LOW | python/copilot/client.py | 1809 | except Exception: | CODE |
| LOW | python/copilot/client.py | 3560 | except Exception: | CODE |
| LOW | python/copilot/client.py | 3567 | except Exception: | CODE |
| LOW | python/copilot/tools.py | 253 | except Exception as exc: | CODE |
| LOW⚡ | python/copilot/session.py | 1334 | except Exception as err: | CODE |
| LOW⚡ | python/copilot/session.py | 1342 | except Exception as err: | CODE |
| LOW⚡ | python/copilot/session.py | 1350 | except Exception as err: | CODE |
| LOW⚡ | python/copilot/session.py | 1939 | except Exception as exc: | CODE |
| LOW⚡ | python/copilot/session.py | 1947 | except Exception as exc: | CODE |
| MEDIUM | python/copilot/session.py | 1733 | ... print(f"Error: {data.message}") | STRING |
| LOW | python/copilot/session.py | 1771 | except Exception: | CODE |
| LOW | python/copilot/session.py | 1972 | except Exception: | CODE |
| LOW | python/copilot/session.py | 2056 | except Exception as exc: | CODE |
| LOW | python/copilot/session.py | 2107 | except Exception: | CODE |
| LOW | python/copilot/session.py | 2158 | except Exception: | CODE |
| LOW | python/copilot/session.py | 2227 | except Exception as exc: | CODE |
| LOW | python/copilot/session.py | 2287 | except Exception: | CODE |
| LOW | python/copilot/session.py | 2513 | except Exception: # pylint: disable=broad-except | CODE |
| LOW | python/copilot/session.py | 2578 | except Exception: | CODE |
| LOW | python/copilot/session.py | 2679 | except Exception: | CODE |
| LOW | python/copilot/session.py | 2756 | except Exception: # pylint: disable=broad-except | CODE |
| LOW | python/copilot/_jsonrpc.py | 122 | except Exception: | CODE |
| LOW | python/copilot/_jsonrpc.py | 199 | except Exception: | CODE |
| LOW | python/copilot/_jsonrpc.py | 284 | except Exception as e: | CODE |
| LOW | python/copilot/_jsonrpc.py | 398 | except Exception as exc: # pylint: disable=broad-except | CODE |
| LOW | python/copilot/_jsonrpc.py | 455 | except Exception: # pylint: disable=broad-except | CODE |
| LOW | python/copilot/_jsonrpc.py | 463 | except Exception: # pylint: disable=broad-except | CODE |
| LOW | python/copilot/_jsonrpc.py | 487 | except Exception as exc: # pylint: disable=broad-except | CODE |
| MEDIUM | python/copilot/_jsonrpc.py | 460 | def _await_outcome(): | CODE |
| LOW | python/copilot/_ffi_runtime_host.py | 464 | except Exception: # noqa: BLE001 | CODE |
| LOW | python/copilot/_ffi_runtime_host.py | 501 | except Exception: # noqa: BLE001 | CODE |
| LOW | python/copilot/_ffi_runtime_host.py | 508 | except Exception: # noqa: BLE001 | CODE |
| 32 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | nodejs/docs/agent-author.md | 7 | ### Step 1: Scaffold the extension | COMMENT |
| LOW⚡ | nodejs/docs/agent-author.md | 18 | ### Step 2: Edit the extension file | COMMENT |
| LOW⚡ | nodejs/docs/agent-author.md | 26 | ### Step 3: Reload extensions | COMMENT |
| LOW⚡ | nodejs/docs/agent-author.md | 34 | ### Step 4: Verify | COMMENT |
| LOW | docs/getting-started.md | 31 | ## Step 1: install the SDK | COMMENT |
| LOW | docs/getting-started.md | 140 | ## Step 2: send your first message | COMMENT |
| LOW | docs/getting-started.md | 372 | ## Step 3: add streaming responses | COMMENT |
| LOW | docs/getting-started.md | 881 | ## Step 4: add a custom tool | COMMENT |
| LOW | docs/getting-started.md | 1289 | ## Step 5: build an interactive assistant | COMMENT |
| LOW | docs/setup/github-oauth.md | 75 | ## Step 1: create a GitHub OAuth app | COMMENT |
| LOW | docs/setup/github-oauth.md | 89 | ## Step 2: implement the OAuth flow | COMMENT |
| LOW | docs/setup/github-oauth.md | 114 | ## Step 3: pass the token to the SDK | COMMENT |
| LOW | docs/setup/backend-services.md | 59 | ## Step 1: start the CLI in headless mode | COMMENT |
| LOW | docs/setup/backend-services.md | 122 | ## Step 2: connect the SDK | COMMENT |
| LOW | docs/integrations/microsoft-agent-framework.md | 361 | // Step 1: Code review session | COMMENT |
| LOW | docs/integrations/microsoft-agent-framework.md | 371 | // Step 2: Documentation session using review output | COMMENT |
| LOW | .github/workflows/release-changelog.md | 47 | ### Step 1: Identify the version range | COMMENT |
| LOW | .github/workflows/release-changelog.md | 63 | ### Step 2: Gather changes | COMMENT |
| LOW | .github/workflows/release-changelog.md | 76 | ### Step 3: Categorize and write up | COMMENT |
| LOW | .github/workflows/release-changelog.md | 87 | ### Step 4: Update CHANGELOG.md (stable releases only) | COMMENT |
| LOW | .github/workflows/release-changelog.md | 107 | ### Step 5: Create a Pull Request (stable releases only) | COMMENT |
| LOW | .github/workflows/release-changelog.md | 116 | ### Step 6: Update the GitHub Release | COMMENT |
| LOW | …va-adapt-handwritten-code-to-accept-upgrade-changes.md | 68 | ### Step 0: Setup | COMMENT |
| LOW⚡ | …va-adapt-handwritten-code-to-accept-upgrade-changes.md | 83 | ### Step 1: Reproduce failures | COMMENT |
| LOW⚡ | …va-adapt-handwritten-code-to-accept-upgrade-changes.md | 93 | ### Step 2: Analyze compilation errors | COMMENT |
| LOW⚡ | …va-adapt-handwritten-code-to-accept-upgrade-changes.md | 102 | ### Step 3: Fix compilation errors | COMMENT |
| LOW | …va-adapt-handwritten-code-to-accept-upgrade-changes.md | 117 | ### Step 4: Fix test failures | COMMENT |
| LOW | …va-adapt-handwritten-code-to-accept-upgrade-changes.md | 131 | ### Step 5: Format | COMMENT |
| LOW | …va-adapt-handwritten-code-to-accept-upgrade-changes.md | 137 | ### Step 6: Final validation | COMMENT |
| LOW | .github/workflows/java-codegen-fix.md | 81 | ### Step 0: Setup | COMMENT |
| LOW | .github/workflows/java-codegen-fix.md | 104 | ### Step 1: Reproduce the failure | COMMENT |
| LOW | .github/workflows/java-codegen-fix.md | 116 | ### Step 2: Diagnose the root cause | COMMENT |
| LOW | .github/workflows/java-codegen-fix.md | 145 | ### Step 3: Fix the code generator (if needed) | COMMENT |
| LOW | .github/workflows/java-codegen-fix.md | 168 | ### Step 4: Fix handwritten code (up to 3 attempts) | COMMENT |
| LOW | .github/workflows/java-codegen-fix.md | 208 | ### Step 5: Push fixes | COMMENT |
| LOW | .github/workflows/java-codegen-fix.md | 221 | ### Step 6: Failure handling | COMMENT |
| LOW⚡ | .github/workflows/cross-repo-issue-analysis.md | 64 | ### Step 1: Understand the Issue | COMMENT |
| LOW⚡ | .github/workflows/cross-repo-issue-analysis.md | 68 | ### Step 2: Analyze Against copilot-sdk | COMMENT |
| LOW⚡ | .github/workflows/cross-repo-issue-analysis.md | 76 | ### Step 3: Investigate copilot-agent-runtime | COMMENT |
| LOW | .github/workflows/cross-repo-issue-analysis.md | 93 | ### Step 4: Make Your Determination | COMMENT |
| LOW | .github/agents/docs-maintenance.agent.md | 268 | ### Step 1: Inventory Current Docs | COMMENT |
| LOW | .github/agents/docs-maintenance.agent.md | 278 | ### Step 2: Check Feature Coverage | COMMENT |
| LOW | .github/agents/docs-maintenance.agent.md | 296 | ### Step 3: Validate Links | COMMENT |
| LOW | .github/agents/docs-maintenance.agent.md | 311 | ### Step 4: Check Multi-Language Examples | COMMENT |
| LOW | .github/agents/docs-maintenance.agent.md | 324 | ### Step 5: Validate Code Samples Against SDK Interface | COMMENT |
| LOW | .github/agents/docs-maintenance.agent.md | 442 | ### Step 6: Create the Plan | COMMENT |
| LOW | .github/skills/new-java-e2e-test-yaml-and-test/SKILL.md | 23 | ### Step 1: Choose a snapshot category and snapshot base name | COMMENT |
| LOW | .github/skills/new-java-e2e-test-yaml-and-test/SKILL.md | 30 | ### Step 2: Create the YAML snapshot file | COMMENT |
| LOW | .github/skills/new-java-e2e-test-yaml-and-test/SKILL.md | 55 | ### Step 3: Create the Java IT test class | COMMENT |
| LOW | .github/skills/new-java-e2e-test-yaml-and-test/SKILL.md | 126 | ### Step 4: Verify | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | python/copilot/copilot_request_handler.py | 532 | exchange._queue.push(_BodyItem(cancel=True, cancel_reason=params.cancel_reason)) | CODE |
| HIGH⚡ | python/copilot/copilot_request_handler.py | 535 | exchange._queue.push( | CODE |
| HIGH⚡ | python/copilot/copilot_request_handler.py | 539 | exchange._queue.push(_BodyItem(end=True)) | CODE |
| HIGH | python/e2e/test_session_e2e.py | 934 | await session.send("Run 'sleep 2 && echo done'") | CODE |
| HIGH | python/e2e/test_session_e2e.py | 980 | "Run 'sleep 2 && echo done'", | CODE |
| HIGH | python/e2e/test_builtin_tools_e2e.py | 31 | "Run 'echo hello && echo world'. Tell me the exact output.", | CODE |
| HIGH | python/e2e/test_client_options_e2e.py | 86 | const captureFile = captureIndex >= 0 ? process.argv[captureIndex + 1] : undefined; | CODE |
| HIGH | python/e2e/test_client_options_e2e.py | 142 | requests.push({ method: message.method, params: message.params }); | CODE |
| HIGH⚡ | python/e2e/test_client_options_e2e.py | 154 | writeResponse(message.id, { sessionId, workspacePath: null, capabilities: null }); | CODE |
| HIGH⚡ | python/e2e/test_client_options_e2e.py | 161 | workspacePath: null, | CODE |
| HIGH⚡ | python/e2e/test_client_options_e2e.py | 162 | capabilities: null, | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | python/copilot/client.py | 4103 | # Create a TCP socket connection with timeout | COMMENT |
| MEDIUM | python/copilot/client.py | 4133 | # Create a file-like wrapper for the socket | COMMENT |
| MEDIUM | python/copilot/client.py | 4136 | # Create a mock process object that JsonRpcClient expects | COMMENT |
| MEDIUM | python/copilot/client.py | 1251 | >>> # Create a client with default options (spawns CLI server) | STRING |
| MEDIUM | python/copilot/client.py | 1255 | >>> # Create a session and send a message | STRING |
| MEDIUM | python/e2e/test_skills_e2e.py | 34 | # Create a skill subdirectory with SKILL.md | COMMENT |
| MEDIUM | python/e2e/test_skills_e2e.py | 38 | # Create a skill that instructs the model to include a specific marker in responses | COMMENT |
| MEDIUM | python/e2e/test_skills_e2e.py | 159 | # Create a session without skills first | COMMENT |
| MEDIUM⚡ | python/e2e/test_session_e2e.py | 326 | # Create a couple of sessions and send messages to persist them | COMMENT |
| MEDIUM | python/e2e/test_session_e2e.py | 369 | # Create a session and send a message to persist it | COMMENT |
| MEDIUM | python/e2e/test_session_e2e.py | 401 | # Create a session and send a message to persist it | COMMENT |
| MEDIUM | python/e2e/test_session_e2e.py | 430 | # Create a session and send a message to persist it | COMMENT |
| MEDIUM | python/e2e/test_hooks_e2e.py | 34 | # Create a file for the model to read | COMMENT |
| MEDIUM | python/e2e/test_hooks_e2e.py | 65 | # Create a file for the model to read | COMMENT |
| MEDIUM | python/e2e/test_hooks_e2e.py | 135 | # Create a file | COMMENT |
| MEDIUM | python/e2e/test_multi_client_e2e.py | 350 | # Create a file that the agent will try to edit | COMMENT |
| MEDIUM | python/e2e/test_rpc_e2e.py | 209 | # Create a file | COMMENT |
| MEDIUM | python/e2e/test_rpc_event_side_effects_e2e.py | 121 | # Create the plan first | COMMENT |
| MEDIUM | python/e2e/test_subagent_hooks_e2e.py | 94 | # Create a client with the session-based subagents feature flag | COMMENT |
| MEDIUM | python/e2e/test_subagent_hooks_e2e.py | 116 | # Create a file for the sub-agent to read | COMMENT |
| MEDIUM | python/e2e/test_mcp_and_agents_e2e.py | 97 | # Create a session first | COMMENT |
| MEDIUM | python/e2e/test_mcp_and_agents_e2e.py | 181 | # Create a session first | COMMENT |
| MEDIUM | python/e2e/testharness/context.py | 98 | # Create the shared client (like Node.js/Go do). The in-process (FFI) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | nodejs/test/e2e/streaming_fidelity.e2e.test.ts | 85 | gitHubToken: isCI ? "fake-token-for-e2e-tests" : process.env.GITHUB_TOKEN, | CODE |
| LOW | nodejs/test/e2e/streaming_fidelity.e2e.test.ts | 123 | gitHubToken: isCI ? "fake-token-for-e2e-tests" : process.env.GITHUB_TOKEN, | CODE |
| LOW | nodejs/test/e2e/session.e2e.test.ts | 373 | gitHubToken: isCI ? "fake-token-for-e2e-tests" : undefined, | CODE |
| LOW | nodejs/test/e2e/session.e2e.test.ts | 445 | apiKey: "fake-key", | CODE |
| LOW | nodejs/test/e2e/harness/sdkTestContext.ts | 17 | export const DEFAULT_GITHUB_TOKEN = "fake-token-for-e2e-tests"; | CODE |
| LOW | go/internal/e2e/session_e2e_test.go | 551 | APIKey: "fake-key", | CODE |
| LOW | go/internal/e2e/testharness/context.go | 16 | const defaultGitHubToken = "fake-token-for-e2e-tests" | CODE |
| LOW | python/e2e/test_ui_elicitation_multi_client_e2e.py | 60 | "fake-token-for-e2e-tests" if os.environ.get("GITHUB_ACTIONS") == "true" else None | CODE |
| LOW | python/e2e/test_rpc_server_e2e.py | 110 | github_token="fake-token-for-e2e-tests", | CODE |
| LOW | python/e2e/test_streaming_fidelity_e2e.py | 78 | "fake-token-for-e2e-tests" if os.environ.get("GITHUB_ACTIONS") == "true" else None | CODE |
| LOW | python/e2e/test_streaming_fidelity_e2e.py | 119 | "fake-token-for-e2e-tests" if os.environ.get("GITHUB_ACTIONS") == "true" else None | CODE |
| LOW | python/e2e/test_client_lifecycle_e2e.py | 59 | "fake-token-for-e2e-tests" if os.environ.get("GITHUB_ACTIONS") == "true" else None | CODE |
| LOW⚡ | python/e2e/test_session_e2e.py | 479 | "api_key": "fake-key", | CODE |
| LOW⚡ | python/e2e/test_session_e2e.py | 490 | "api_key": "fake-key", | CODE |
| LOW | python/e2e/test_session_e2e.py | 256 | "fake-token-for-e2e-tests" if os.environ.get("GITHUB_ACTIONS") == "true" else None | CODE |
| LOW | python/e2e/test_session_e2e.py | 511 | "api_key": "fake-key", | CODE |
| LOW | python/e2e/test_multi_client_e2e.py | 54 | "fake-token-for-e2e-tests" if os.environ.get("GITHUB_ACTIONS") == "true" else None | CODE |
| LOW | python/e2e/test_telemetry_e2e.py | 72 | "fake-token-for-e2e-tests" if os.environ.get("GITHUB_ACTIONS") == "true" else None | CODE |
| LOW | python/e2e/test_mode_empty_e2e.py | 29 | "fake-token-for-e2e-tests" if os.environ.get("GITHUB_ACTIONS") == "true" else None | CODE |
| LOW | python/e2e/test_copilot_request_handler_e2e.py | 236 | "fake-token-for-e2e-tests" if os.environ.get("GITHUB_ACTIONS") == "true" else None | CODE |
| LOW | python/e2e/test_suspend_e2e.py | 31 | "fake-token-for-e2e-tests" if os.environ.get("GITHUB_ACTIONS") == "true" else None | CODE |
| LOW | python/e2e/_copilot_request_helpers.py | 330 | "fake-token-for-e2e-tests" if os.environ.get("GITHUB_ACTIONS") == "true" else None | CODE |
| LOW | python/e2e/test_subagent_hooks_e2e.py | 98 | "fake-token-for-e2e-tests" if os.environ.get("GITHUB_ACTIONS") == "true" else None | CODE |
| LOW | python/e2e/test_commands_e2e.py | 53 | "fake-token-for-e2e-tests" if os.environ.get("GITHUB_ACTIONS") == "true" else None | CODE |
| LOW | python/e2e/test_connection_token.py | 45 | "fake-token-for-e2e-tests" if os.environ.get("GITHUB_ACTIONS") == "true" else None | CODE |
| LOW | python/e2e/testharness/context.py | 46 | DEFAULT_GITHUB_TOKEN = "fake-token-for-e2e-tests" | CODE |
| LOW | rust/tests/e2e/session.rs | 1496 | .with_api_key("fake-key"), | CODE |
| LOW | rust/tests/e2e/session.rs | 1523 | .with_api_key("fake-key") | CODE |
| LOW | rust/tests/e2e/session.rs | 1560 | .with_api_key("fake-key"), | CODE |
| LOW | rust/tests/e2e/elicitation.rs | 463 | default: Some("user@example.com"), | CODE |
| LOW | rust/tests/e2e/elicitation.rs | 471 | assert_eq!(options.default, Some("user@example.com")); | CODE |
| LOW | …c/test/java/com/github/copilot/ExecutorWiringTest.java | 91 | .setGitHubToken("fake-token-for-e2e-tests"); | CODE |
| LOW | …java/com/github/copilot/CopilotRequestTestSupport.java | 85 | ctx.setCopilotUserByToken("fake-token-for-e2e-tests", "e2e-user", "individual_pro", ctx.getProxyUrl(), | CODE |
| LOW | …t/java/com/github/copilot/ProviderEndpointE2ETest.java | 90 | ctx.setCopilotUserByToken("fake-token-for-e2e-tests", "e2e-user", "individual_pro", ctx.getProxyUrl(), | CODE |
| LOW | …a/src/test/java/com/github/copilot/E2ETestContext.java | 63 | private static final String DEFAULT_GITHUB_TOKEN = "fake-token-for-e2e-tests"; | CODE |
| LOW | dotnet/test/Harness/E2ETestContext.cs | 14 | private const string DefaultGitHubToken = "fake-token-for-e2e-tests"; | CODE |
| LOW | dotnet/test/E2E/SessionE2ETests.cs | 933 | ApiKey = "fake-key", | CODE |
| LOW | dotnet/test/E2E/SessionE2ETests.cs | 958 | ApiKey = "fake-key", | CODE |
| LOW | dotnet/test/E2E/SessionE2ETests.cs | 990 | ApiKey = "fake-key", | CODE |
| LOW | dotnet/test/E2E/ElicitationE2ETests.cs | 343 | Default = "user@example.com", | CODE |
| LOW | dotnet/test/E2E/ElicitationE2ETests.cs | 351 | Assert.Equal("user@example.com", options.Default); | CODE |
| LOW | .github/skills/java-coding-skill/SKILL.md | 735 | new UserInfo(userId, "John Doe", "john@example.com", "Developer") | STRING |
| LOW | …hub/skills/new-java-e2e-test-yaml-and-test/examples.md | 64 | - `ctx.createClient()` uses `fake-token-for-e2e-tests` — works in CI | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | python/e2e/test_provider_endpoint_e2e.py | 4 | # the harness env passed to the CLI subprocess opts in for this test file. | COMMENT |
| MEDIUM | python/e2e/test_provider_endpoint_e2e.py | 89 | # CAPI baseUrl is the (proxy) Copilot API URL injected by the harness. | COMMENT |
| MEDIUM | python/e2e/test_provider_endpoint_e2e.py | 105 | # it must use the documented header name. The harness may have a | COMMENT |
| MEDIUM | python/e2e/testharness/proxy.py | 32 | # The harness server is in the shared test directory | COMMENT |
| MEDIUM | …/src/test/java/com/github/copilot/SlashCommandsIT.java | 42 | * {@link TestUtil#findCliPath()} so the test harness binary is found in CI. | COMMENT |
| MEDIUM | dotnet/test/Harness/InProcessEnvIsolation.cs | 32 | #pragma warning disable CA2255 // ModuleInitializer discouraged in libraries; intentional in this test harness. | COMMENT |
| MEDIUM | .github/workflows/copilot-setup-steps.yml | 107 | # Install test harness dependencies | COMMENT |
| MEDIUM | .github/workflows/rust-sdk-tests.yml | 138 | # (the harness forces concurrency to 1) because it mirrors each test's | COMMENT |
| MEDIUM | .github/workflows/rust-sdk-tests.yml | 205 | # The harness forces serial execution in-process (both the async semaphore and | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | scripts/codegen/python.ts | 3186 | elif "max_context_window_tokens" not in caps["limits"]: | CODE |
| HIGH | scripts/codegen/python.ts | 3728 | lines.push(` return None`); | CODE |
| HIGH | scripts/codegen/python.ts | 3816 | lines.push(` if handler is None: return None`); | CODE |
| HIGH | scripts/codegen/python.ts | 3818 | lines.push(` return None`); | CODE |
| HIGH | scripts/codegen/python.ts | 3844 | lines.push(` return None`); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/copilot/_cli_download.py | 363 | CODE | |
| LOW | python/copilot/_cli_download.py | 491 | CODE | |
| LOW | python/copilot/client.py | 1273 | CODE | |
| LOW | python/copilot/client.py | 1615 | CODE | |
| LOW | python/copilot/client.py | 1715 | CODE | |
| LOW | python/copilot/client.py | 1858 | CODE | |
| LOW | python/copilot/client.py | 3481 | CODE | |
| LOW | python/copilot/tools.py | 124 | CODE | |
| LOW | python/copilot/tools.py | 351 | CODE | |
| LOW | python/copilot/tools.py | 186 | CODE | |
| LOW | python/copilot/tools.py | 219 | CODE | |
| LOW | python/copilot/session.py | 2661 | CODE | |
| LOW | python/copilot/_jsonrpc.py | 371 | CODE | |
| LOW | python/e2e/test_ui_elicitation_multi_client_e2e.py | 105 | CODE | |
| LOW | python/e2e/test_compaction_e2e.py | 24 | CODE | |
| LOW | python/e2e/test_compaction_e2e.py | 50 | CODE | |
| LOW | python/e2e/test_multi_client_e2e.py | 107 | CODE | |
| LOW | python/e2e/test_multi_provider_registry_e2e.py | 18 | CODE | |
| LOW | python/e2e/test_session_config_e2e.py | 34 | CODE | |
| LOW | python/e2e/test_session_config_e2e.py | 53 | CODE | |
| LOW | python/e2e/test_session_fs_sqlite_e2e.py | 121 | CODE | |
| LOW | python/e2e/test_pending_work_resume_e2e.py | 441 | CODE | |
| LOW | python/e2e/test_rpc_event_side_effects_e2e.py | 79 | CODE | |
| LOW | python/e2e/test_rpc_session_state_e2e.py | 561 | CODE | |
| LOW | python/e2e/test_rpc_session_state_e2e.py | 813 | CODE | |
| LOW | python/e2e/test_commands_e2e.py | 98 | CODE | |
| LOW | python/e2e/testharness/context.py | 207 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …src/main/java/com/github/copilot/rpc/AzureOptions.java | 20 | * .setApiKey("your-api-key").setAzure(new AzureOptions().setApiVersion("2024-02-01")); | COMMENT |
| HIGH | dotnet/README.md | 740 | ApiKey = "your-api-key" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/copilot/copilot_request_handler.py | 412 | def set_context(self, params: LlmInferenceHTTPRequestStartRequest) -> None: | CODE |
| LOW⚡ | python/copilot/client.py | 119 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | python/copilot/client.py | 4300 | async def _set_llm_inference_provider(self) -> None: | CODE |
| LOW | python/copilot/client.py | 3445 | async def set_foreground_session_id(self, session_id: str) -> None: | CODE |
| LOW | python/copilot/client.py | 4264 | async def _set_session_fs_provider(self) -> None: | CODE |
| LOW | python/copilot/session.py | 88 | logger = logging.getLogger(__name__) | CODE |
| LOW | python/copilot/session.py | 2384 | def _set_open_canvases(self, instances: list[OpenCanvasInstance]) -> None: | CODE |
| LOW | python/copilot/session.py | 2412 | def _set_capabilities(self, capabilities: SessionCapabilities | None) -> None: | CODE |
| LOW | python/copilot/__init__.py | 195 | __all__ = [ | CODE |
| LOW | python/copilot/_jsonrpc.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | python/copilot/canvas.py | 34 | __all__ = [ | CODE |
| LOW | python/e2e/testharness/proxy.py | 127 | async def set_copilot_user_by_token(self, token: str, response: dict[str, Any]) -> None: | CODE |
| LOW | python/e2e/testharness/__init__.py | 7 | __all__ = [ | CODE |
| LOW | python/e2e/testharness/context.py | 271 | async def set_copilot_user_by_token(self, token: str, response: dict[str, Any]) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | go/cmd/bundler/main.go | 322 | content := fmt.Sprintf(`// Code generated by copilot-sdk bundler; DO NOT EDIT. | CODE |
| HIGH | …java/com/github/copilot/tool/CopilotToolProcessor.java | 182 | out.println("// GENERATED by CopilotToolProcessor — do not edit"); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/copilot/_cli_download.py | 477 | # Check if download is disabled | COMMENT |
| LOW | python/copilot/client.py | 1560 | # Check if it's just a port number | COMMENT |
| LOW | python/copilot/client.py | 1703 | # Check if process exited and capture any remaining stderr | COMMENT |
| LOW | python/copilot/client.py | 4154 | # Close the file wrapper — makefile() holds its own | COMMENT |
| LOW | python/copilot/_jsonrpc.py | 373 | # Check if it's a response to our request | COMMENT |
| LOW | python/copilot/_jsonrpc.py | 412 | # Check if it's a notification from the server | COMMENT |
| LOW | python/e2e/test_rpc_e2e.py | 219 | # Read file | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …_config/vision_disabled_then_enabled_via_setmodel.yaml | 99 | The file exists. Unfortunately, I'm unable to see the actual image content from the view tool output. The tool | CODE |
| MEDIUM | …_config/vision_disabled_then_enabled_via_setmodel.yaml | 149 | The file exists. Unfortunately, I'm unable to see the actual image content from the view tool output. The tool | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | go/session.go | 35 | // Example usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/copilot/client.py | 1273 | CODE | |
| LOW | python/copilot/client.py | 1927 | CODE | |
| LOW | python/copilot/client.py | 2597 | CODE |