v0.83.0
Pre-release
Pre-release
Immutable
release. Only release title and notes can be modified.
π Release Highlights
This release focuses on security hardening, ESLint rule expansion, and developer experience improvements β with notable fixes to OAuth emission, MCP telemetry, and the Anthropic SDK retry storm.
β¨ What's New
- New ESLint rules β Three new analyzers shipped:
stringsjoinone(detects single-elementstrings.Joincalls),no-setfailed-then-exit-zero(guards against masked failures), andrequire-execfilesync-try-catch(enforces error handling aroundexecFileSync). These complement the newrequire-fs-io-try-catchrule forstatSync/readdirSync/copyFileSync/unlinkSync/renameSync. - Console stderr wrappers β New
console.Print*stderr wrappers reduce noise in MCP and secrets call sites, making log output cleaner and easier to follow. close_issueagents can choose state-reason at runtime β Agents that close issues can now select the closure reason dynamically, enabling more expressive workflow outcomes.- Sub-30s
make test-unitvia impacted-first execution β Test runs now prioritise changed packages first, targeting a <30 s feedback loop for most incremental changes.
π Bug Fixes & Improvements
- OAuth activation YAML multiline fix β Corrects incorrect YAML emission for multiline
engine.env.COPILOT_GITHUB_TOKENin OAuth activation blocks. - Safeoutputs CLI literal
fix β Literalin CLI-mode safeoutputs string arguments are now correctly expanded to newlines. - Claude SDK inner retries disabled β Anthropic SDK retries are suppressed to prevent terminal-error storms when the API is unreliable.
- Compiler scope fix β Resolved a bug where the
mount-mcp-clisstep reference was emitted out of scope in generated lock files. - MCP telemetry gap fix β Normalized artifact path discovery eliminates false gaps in daily observability reports.
create_issuetitle contamination fix β Report content no longer bleeds into the issue title field.- Pi engine firewall β
pi.devadded to the Pi engine firewall allowlist. - Threat detection guard β
conclude_threat_detection.shnow correctly skips whenRUN_DETECTION=false.
π Security
- HTML template renderer β Replaced unsafe string formatting with
html/templateto resolve an unsafe-quoting alert in the bootstrap page renderer (CodeQL). - Action pin SHA guard β Runtime guard for empty SHAs in action pins; invalid
ruby/setup-rubyentry removed. - Sighthound CWE-78 fixes β Top 5 command-injection findings addressed.
- Docker build action pinned to commit SHA β Resolves CodeQL alert #625.
π Documentation
- Automatic Node.js setup for self-hosted/GPU runners β New guide covering Node.js configuration on runners without pre-installed toolchains.
- Bounded optimization reference β Documents strategies for keeping repetitive agentic work within token and time budgets.
- Linter doc-sync improvements β Registry, prose docs, and spec labels are now kept in sync automatically.
Generated by π Release Β· sonnet46 19.1 AIC Β· β 7.9K
What's Changed
- [instructions] Sync instruction files with release v0.82.14 by @github-actions[bot] in #47049
- refactor(parser): extract extractEngineMCPSettings to bring extractEngineConfig under 60-line limit by @pelikhan with @Copilot in #47009
- Render compressed model alias before AIC in generated footers by @pelikhan with @Copilot in #47018
- Bump prettier from 3.9.5 to 3.9.6 in /actions/setup/js by @dependabot[bot] in #47060
- Bump @github/copilot-sdk from 1.0.6 to 1.0.7 in /actions/setup/js by @dependabot[bot] in #47059
- Bump astro from 7.1.0 to 7.1.3 in /docs by @dependabot[bot] in #47057
- Bump vite from 8.1.0 to 8.1.5 in /actions/setup/js by @dependabot[bot] in #47058
- Add SEC-006 conformance coverage for E009/E010 in safe-output processor paths by @pelikhan with @Copilot in #47003
- fix(eslint-factory): prefer-core-logging suggestion unsafe for non-string arguments by @pelikhan with @Copilot in #47020
- refactor(pkg/linters): extract helpers to eliminate all 33 large-function findings by @pelikhan with @Copilot in #47022
- eslint(no-core-error-then-process-exit): widen detection to non-adjacent pairs by @pelikhan with @Copilot in #47043
- fix: send agent_assignment in assignAgentToIssue REST payload by @pelikhan with @Copilot in #47047
- feat(console): golden tests for non-TTY ProgressBar outputs + TTY/non-TTY comment clarification by @pelikhan with @Copilot in #47042
- Improve signed-commits push refusal rendering in fallback issue bodies by @pelikhan with @Copilot in #47056
- Allow close_issue agents to choose state-reason at runtime by @pelikhan with @Copilot in #47045
- [eslint-miner] eslint: add no-core-error-then-process-exitcode rule by @github-actions[bot] in #47054
- fix(eslint): patch switch fall-through false negative and hoisted function false positive in require-return-after-core-setfailed by @pelikhan with @Copilot in #47055
- refactor(workflow,cli): eliminate 680 function-length lint findings via targeted helper extraction by @pelikhan with @Copilot in #47061
- fix: runtime guard for empty SHA in action pins + remove invalid ruby/setup-ruby@v1.319.0 entry by @pelikhan with @Copilot in #47048
- fix: add
actions: writetoupdate_cache_memoryandconclusionjobs to unblock cache saves by @pelikhan with @Copilot in #47046 - chore: CLI version updates 2026-07-21 by @pelikhan with @Copilot in #47005
- Update gh-aw-threat-detection to v0.3.0 by @davidslater with @Copilot in #47149
- [dead-code] chore: remove dead functions β 1 function removed by @github-actions[bot] in #47093
- Tighten reference docs for artifact compatibility, audit JSON contracts, and safe-output safeguards by @pelikhan with @Copilot in #47117
- [docs] docs: tighten markdown reference guidance by @github-actions[bot] in #47170
- [log] Add debug logging to token accounting and expression detection by @github-actions[bot] in #47185
- build(deps): bump the npm_and_yarn group across 1 directory with 2 updates by @dependabot[bot] in #47197
- build(deps): bump google.golang.org/grpc from 1.82.0 to 1.82.1 in the go_modules group across 1 directory by @dependabot[bot] in #47196
- [community] Update community contributions in README by @github-actions[bot] in #47177
- fix: move pages/id-token permissions to deploy job to fix action_required regression by @pelikhan with @Copilot in #47201
- Optimize
make test-unitfor sub-30s feedback via impacted-first execution by @pelikhan with @Copilot in #47200 - Close linter doc-sync gap by bridging registry, prose docs, and spec labels by @pelikhan with @Copilot in #47204
- [jsweep] Clean convert_gateway_config_shared.cjs by @github-actions[bot] in #47192
- Add
console.Print*stderr wrappers and migrate high-volume MCP/secrets callsites by @pelikhan with @Copilot in #47108 - [actionpins] Add missing internal coverage and table-drive action pin mapping tests by @pelikhan with @Copilot in #47206
- fix: guard conclude_threat_detection.sh so threat-detect never runs when RUN_DETECTION=false by @pelikhan with @Copilot in #47019
- fix(multi-device-docs-tester): Chrome SUID sandbox and server unreachable from agent container by @pelikhan with @Copilot in #46157
- docs: document automatic Node.js setup for self-hosted/GPU runners by @pelikhan with @Copilot in #47234
- chore: remove withinDeferredBoundary dead code in require-execsync-try-catch rule by @pelikhan with @Copilot in #47233
- fix(daily-vulnhunter-scan): raise max-ai-credits to 1500 by @pelikhan with @Copilot in #47236
- test: add regression guard for audit tool exposure in gh aw mcp-server by @pelikhan with @Copilot in #47241
- fix: add pi.dev to Pi engine firewall allowlist by @pelikhan with @Copilot in #47243
- [avenger] ## Update wasm golden file for pi engine changes by @github-actions[bot] in #47255
- [instructions] Sync instruction files with release v0.82.15 by @github-actions[bot] in #47254
- Add Pi offline regression coverage to wasm golden engine test by @pelikhan with @Copilot in #47261
- feat(eslint): add
no-setfailed-then-exit-zerorule by @pelikhan with @Copilot in #47232 - Fix compiler emission bug: mount-mcp-clis step reference out of scope in generated lock files by @pelikhan with @Copilot in #47235
- eslint: no-core-error-then-process-exitcode β forward scan + top-level autofix by @pelikhan with @Copilot in #47240
- fix: address Sighthound CWE-78 command injection findings (top 5) by @pelikhan with @Copilot in #47242
- testify: migrate assert.Contains(err.Error()) β ErrorContains, fix require-error violations by @pelikhan with @Copilot in #47252
- [eslint-miner] eslint: add require-fs-io-try-catch rule (statSync / readdirSync / copyFileSync / unlinkSync / renameSync) by @github-actions[bot] in #47259
- Add PR-level stale lock file guard for workflow markdown edits by @pelikhan with @Copilot in #47238
- Refactor audit report largefunc slice in
pkg/cliby @pelikhan with @Copilot in #47262 - feat: classify driver-exit (0-turn) failures separately from agent-logic failures in health metrics by @pelikhan with @Copilot in #47250
- [WIP] Fix failing GitHub Actions job Integration: Workflow Misc Part 2 by @pelikhan with @Copilot in #47266
- Show evals AIC in generated footer metrics by @pelikhan with @Copilot in #47260
- [WIP] Fix failing GitHub Actions job Integration: Workflow Actions & Containers by @pelikhan with @Copilot in #47279
- fix: remove unused assert import causing fuzz build failure by @pelikhan with @Copilot in #47286
- Fix OAuth activation YAML emission for multiline
engine.env.COPILOT_GITHUB_TOKENby @pelikhan with @Copilot in #47270 - feat(eslint-factory): add require-execfilesync-try-catch rule by @pelikhan with @Copilot in #47251
- Exclude intentional credit-guardrail tests from prod-main health rollups by @pelikhan with @Copilot in #47263
- Migrate deprecated needs.activation.outputs references to steps.sanitized.outputs by @pelikhan with @Copilot in #47264
- fix(create_issue): prevent report content ending up in issue title by @pelikhan with @Copilot in #47282
- Honor
gh aw fixdry-run for dispatcher agent and skill refresh by @pelikhan with @Copilot in #47269 - fix(claude): disable Anthropic SDK inner retries to prevent terminal-error storm by @pelikhan with @Copilot in #47237
- feat(linters): add stringsjoinone analyzer by @pelikhan with @Copilot in #47288
- refactor(pkg/workflow): break up 5 large functions exceeding 60-line lint limit by @pelikhan with @Copilot in #47287
- Make AI credit budget increases a last resort by @pelikhan with @Copilot in #47328
- OTLP conclusion: mark non-zero Copilot CLI exits as run failures when conclusion/error signals are absent by @pelikhan with @Copilot in #47268
- Fix false MCP telemetry gaps in daily observability report by normalizing artifact path discovery by @pelikhan with @Copilot in #47299
- [evals] Enforce binary YES/NO outputs in evals parser by @pelikhan with @Copilot in #47245
- Fix literal
\nin CLI-mode safeoutputs string args not becoming newlines by @pelikhan with @Copilot in #47330 - Document bounded optimization for repetitive work by @pelikhan with @Copilot in #47335
- Pin docker/build-push-action to commit SHA (CodeQL alert #625) by @pelikhan with @Copilot in #47334
Full Changelog: v0.82.15...v0.83.0