anomalyco / anomalyco/opencode

[github-copilot] Unrelated Android/screenshot context injected into active Windows session

Open
#47,933 0 comments 2 reactions 1 assignee View on GitHub

@neriousy is already working on this.

Since Sep 8, 2026.

Dominant language
TypeScript
Stars
209k
Forks
27.5k
PR merge metrics
PR metrics pending

Description

Description

Description

I encountered apparent context contamination in a long-running OpenCode session using GitHub Copilot.

The project is a Windows-only C#/.NET desktop utility. During development, the assistant repeatedly started acting on unrelated tasks that I never requested, including:

  • Recreating UI from an unspecified screenshot
  • Building a Windows login screen with PIN/account controls
  • Creating an Android app using Kotlin/Gradle and planning an APK build

I have never developed an Android project in this workspace/session.

Environment

  • OpenCode: 1.18.29
  • Provider: github-copilot
  • Model: gpt-5.6-sol
  • Variant: max
  • Agent: build
  • OS: Windows

Clearest example

The actual user message was:

Add the matched time/timezone to the existing Windows popup UI, e.g. show 21:00 CST.

Message ID:

msg_07fedf6b50016FfsF1ZIxR784o

Several assistant turns correctly worked on that request.

Then, without a new user message, assistant message:

msg_07ff16a4f001Df62QogdxzQksz

still had:

parentID: msg_07fedf6b50016FfsF1ZIxR784o

but its reasoning suddenly became approximately:

Processing Android app request
The user wants an Android app based on a screenshot.

It then planned to:

  • Inspect Android SDK / Gradle
  • Create an Android project
  • Implement a screenshot-based UI
  • Build an APK

This task is completely unrelated to the parent user message.

Other occurrences

Earlier in the same session, the assistant also suddenly behaved as if the user had provided a screenshot and requested a UI recreation.

It later described a specific 1920×1080 Windows login screen with:

  • PIN input
  • Account switching
  • Bottom-right system controls

and actually modified the project based on that assumption.

I later asked where the login screen came from, and the assistant acknowledged that it was unrelated and removed it.

Export observations

I exported the affected session as JSON (~50k lines).

In the visible exported session, I could not find a corresponding:

  • Android user request
  • Screenshot/image attachment for these turns
  • Compaction entry containing these instructions

This does not prove where the contamination occurred, because the export may not include the complete outbound provider request.

Possible areas to investigate:

  • Session / parent-turn binding
  • Conversation history assembly
  • Prompt cache/session routing
  • GitHub Copilot provider state
  • Concurrent assistant continuation handling

Expected behavior

Assistant continuations should only receive context belonging to the current session/project.

Unrelated task context should never be injected into an active coding session.

Impact

The foreign context affected reasoning, tool calls, todos, and actual project modifications before the assistant eventually detected the mismatch.

I cannot determine whether the foreign context came from another local session, OpenCode state, the GitHub Copilot provider, or another source, so I am not claiming confirmed cross-user data leakage.

Additional evidence

I have the full affected session export and can provide a redacted extract containing:

  • Message IDs
  • Parent IDs
  • Timestamps
  • Roles
  • Model/provider
  • Relevant reasoning/text

I am not attaching the raw export publicly because it contains source-code diffs, local paths, Copilot item IDs, and other project metadata.

Related issues

  • #22466
  • #41519
  • #43133
Plugins

No response

OpenCode version

1.18.29

Steps to reproduce

No response

Screenshot and/or share link

windows-redacted.json

Operating System

Windows 11

Terminal

No response

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.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.