Skip to content

[release/11.0.1xx] Fix OpenCode environment detection - #56836

Open
baronfel wants to merge 1 commit into
release/11.0.1xxfrom
baronfel-opencode-11-backport
Open

baronfel wants to merge 1 commit into
release/11.0.1xxfrom
baronfel-opencode-11-backport

Conversation

@baronfel

@baronfel baronfel commented Oct 29, 2026 •

Copy link
Copy Markdown
Member

Summary

Backport #56820 (merge commit a7d7d44) to release/11.0.1xx.

Correct the OpenCode LLM environment marker from OPENCODE_AI to OPENCODE, preserving the existing presence-based semantics: any non-empty value identifies OpenCode. Add regression cases for OPENCODE=1, OPENCODE=0, an empty value, and rejection of the incorrect OPENCODE_AI marker.

Original PR: #56820

Upstream evidence

OpenCode's shell tool explicitly sets invocation.env.OPENCODE = "1" before running commands:

https://github.com/anomalyco/opencode/blob/77a0fd6f3b247235b09941d55ff0faf72be1dae4/packages/core/src/tool/plugin/shell.ts#L214

Conflict resolution and branch differences

The automated backport conflicted because this branch uses static environment-detection rules that read the process environment, while main uses an injected environment-variable accessor. Only the marker correction is applied to this branch's existing rule; main's detector refactor is not included.

The regression cases use the existing MSTest TelemetryCommonPropertiesTests data source and save/clear/restore environment-isolation mechanism. Both OPENCODE and the rejected OPENCODE_AI marker remain in that isolation list so ambient values cannot affect the regression cases.

Main's test/dotnet.Tests/CommandTests/Test/GivenDotnetTestOutput.cs does not exist on this branch. No missing main-only test files or unrelated refactors are copied.

Changed files:

  • src/Cli/dotnet/Telemetry/LLMEnvironmentDetectorForTelemetry.cs
  • test/dotnet.Tests/TelemetryTests/TelemetryCommonPropertiesTests.cs

Validation on this release branch

  • Full Debug SDK/redist build: build.cmd /bl:1.binlog succeeded, 0 errors. Existing dependency-audit warnings for MessagePack and System.Security.Cryptography.Pkcs remain outside this surgical backport.
  • Branch test assembly and redist were built together, then .dotnet\dotnet.exe .github\skills\targeted-test\scripts\RunTargetedTests.cs -- --project test\dotnet.Tests\dotnet.Tests.csproj --filter "FullyQualifiedName~CanDetectLLMStatusForEnvVars" --no-build passed: 64 passed, 0 failed, 0 skipped.
  • Retained local TRX: artifacts\log\targeted-tests\dotnet.Tests\20261029-135329-42816\test-results.trx; full build binlog: 1.binlog.
  • git diff --check passed.

These are release/11.0.1xx results, not main's 81-test result.

Tactics

Summary

The SDK checks OPENCODE_AI, but OpenCode sets OPENCODE=1 when launching commands, so its environment is not identified by the OpenCode rule. This backport replaces that marker with OPENCODE and retains the existing nonempty-presence semantics. It is suitable for the release branch because the production change is one environment-variable name, without main's detector refactors.

Customer Impact

SDK commands launched through OpenCode on the affected release/11.0.1xx code miss the existing opencode LLM-environment classification unless another agent marker also matches. Ordinary non-agent invocations are unaffected. Exact affected shipped SDK versions and customer-report frequency have not been established; no customer-tested workaround is recorded. After the correction, the obsolete OPENCODE_AI marker alone no longer identifies OpenCode.

Regression?

Unknown — not enough information to determine the introducing PR or first affected SDK version.

Testing

  • Updated the branch's existing MSTest data for OPENCODE=1, OPENCODE=0, empty OPENCODE, and rejected OPENCODE_AI=1; both markers are saved, cleared, and restored for isolation.
  • A full local Debug SDK/redist build succeeded with zero errors.
  • The branch-specific CanDetectLLMStatusForEnvVars run passed all 64 cases with zero failures or skips against the freshly built assembly.
  • git diff --check passed. No successful branch CI result is asserted here; CI should be reviewed before merging. Main's 81-test result is separate upstream validation.

Risk

Low. Only the OpenCode marker changes in production; other agent rules and matching semantics remain unchanged. The two-file backport includes regression coverage for nonempty, empty, and obsolete markers and avoids unrelated main-branch changes.

Backport #56820 (a7d7d44) to the release branch's static detection rules and existing telemetry tests.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings October 29, 2026 13:54
@baronfel
baronfel requested a review from a team as a code owner October 29, 2026 13:54
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).
2 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.
@baronfel

Copy link
Copy Markdown
Member Author

/tactics

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues are recorded for the OpenCode marker backport.

No open issues 🎉

What changed in this PR

Backports the OpenCode detection fix to release/11.0.1xx, preserving the branch’s existing environment-detection implementation without importing main’s refactor.

Changes:

  • Changes the OpenCode marker from OPENCODE_AI to OPENCODE, retaining nonempty-value detection.
  • Adds regression cases for 1, 0, empty values, and rejection of the obsolete marker; isolates both variables during tests.
File Description
test/​dotnet.Tests/​TelemetryTests/​TelemetryCommonPropertiesTests.cs Adds marker regression cases and updates environment isolation.
src/​Cli/​dotnet/​Telemetry/​LLMEnvironmentDetectorForTelemetry.cs Uses OPENCODE for the existing OpenCode detection rule.

Review effort: Balanced

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

2 participants