Repository navigation
fix(plugin): fail closed when Workflow skill context is unavailable - #1088
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When the host registers Workflow skills but cannot read their shared contract, the main skill can continue using the broader upstream MCP surface. Repeat the 14-tool safety boundary in every main skill and require a bounded text-only response with Workflow MCP calls stopped when the contract is unavailable.
Keep the portable direct wfctl transport unchanged. Add a passive Codex policy example and Go-only maintainer support for retained-record auditing and the actual installed-file read prerequisite. The helper source version is 0.1.2 to distinguish it from the preserved 0.1.1 package; this creates no engine release, installation or authentication flow.
Validation
Independent adversarial review resolved the supporting-file bounds, CLI I/O coverage and canonical tool-list parity findings; no open Critical or Important code-review issue remains. Doc-reconciliation: clean.
Acceptance limits
The prior 11-turn model run completed but did not establish clean acceptance. Offline replay finds 75 attempted MCP calls: 11 forbidden-name calls and 11 additional argument-contract violations. The committed fixture normalizes YAML/identifiers/statuses and is explicitly synthetic; actual session transcripts are not included.
The real isolated host filters discovery to the configured 14 names, but its owned contract read failed before cat with exit 71 / sandbox_apply_EPERM. The test driver wrapped app-server in Seatbelt before Codex tried to apply its command sandbox. Named command profiles do not replace equivalent whole-controller/MCP containment, and removing the outer policy is not proposed here. A separately contained disposable executor with reviewed isolation and passing no-auth canaries is required before another sign-in.
Patched model behavior, implicit selection, native call-time tool rejection, WebSocket health and GUI activation remain unverified. The earlier model transport fell back from UnknownIssuer WebSocket errors to HTTPS. No fresh OAuth/model/provider call, trust change, active-profile update or new engine release is part of this PR. The remaining one authorized test turn is preserved.