Repository navigation
Remove inherited GitHub credentials from public fix publishing - #690
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.
Summary
The publishing prompt supplies the private record and worktree. The post-session side-effect sweep remains.
Closes #673
Evidence
cargo test --test security_run public_fix_publishing_cannot_write_github_content_with_any_harness -- --exactfailed because the publishing session created an issue.After: all 97 Security-run tests pass, covering denied issue/comment/PR/API writes across six Harnesses, valid single/Spec publication, supported publishing Resumes, private bigger fixes and cleanup.
cargo test,cargo check --all-targets,cargo clippy --all-targets -- -D warnings,cargo fmt --check, prompt regeneration and all three site tests pass.Seams under test
thirdshift secure security-fixCLI, with real Git/worktrees and external Harness/GitHub stand-ins, observing public repository state and the delivered PR.Unaddressed findings
Standards
src/session.rs:233and:320: retain the explicit completion-policy classification and exhaustive launch match for the fivePurposevariants. This local plan decision keeps protocol dispatch visible and compiler-checked; a predicate used as a match guard would require a fallback. This is a maintenance judgement, not a behavioral failure.Spec
src/session.rs:343: the review's exact temporary-fixture reproduction was independently run and failed (exit 101): explicitly unsettingGH_CONFIG_DIRlet the same OS user reuse a stored fake credential and edit issue Numbered Issue branches after a merged or closed PR #7. This is not refuted by the passing denial tests. Security fix: run the publishing session without GitHub write authority #673 prescribes removing environmental credentials/using an empty gh config; ADR 0013 prescribes fully trusted sessions with the worktree as their only boundary. The stronger interpretation requires a publishing-only OS isolation boundary and a decision about supplying all six Harnesses' model credentials. The decision is filed as #691, labelled onlyneeds-triage; changing that session boundary is a Spec/Day-shift decision.Review coverage: both axes read all seven changed files; no changed file was left unread. Full reports, final files-read lists and the retained reproduction are saved in
.thirdshift-review-1d5wAY/standards.mdandspec.mdin the implementation worktree.Merge Danger
Door: two-way
Reverting restores the previous session launch environment.
Blast Radius: Sessions
Public fix publishing and its Resumes lose automatic GitHub authentication. This does not isolate an unrestricted session from the user's readable credential stores; see the Spec finding above.
Built with codex · gpt-6.1-sol · high