Skip to content

Security fix: run the publishing session without GitHub write authority #673

Closed

Description

@JacobStephens2

This was generated by AI during triage.

Private record: https://github.com/JacobStephens2/thirdshift/security/advisories/GHSA-jwc8-2c4w-hvm4

The staged-text work (#626, #646) already checks public text before thirdshift creates any issue. What's left is the session's own authority.

What to change

  • On a public repository, the Security fix publishing session (security-fix-publishing, Purpose::Security) runs without GitHub write authority, through every Harness adapter's security_session. thirdshift puts what the session needs to read, including the private record, into its prompt or worktree. The session then runs with GitHub credentials removed from its environment (for example, no GH_TOKEN/GITHUB_TOKEN and an empty gh config directory), not with a read-only token the user would have to create.
  • thirdshift remains the only writer of public content. It writes only from staged text that check_public_fix_text has accepted, on both the single-fix and staged-Spec paths.
  • The post-session issues_created_since / fail_on_side_effects sweep stays as a second check.

Acceptance criteria

  • On a public repository, any attempt by a publishing session to create an issue, comment or pull request, or to edit one, fails, for every supported Harness.
  • A test shows that such an attempt leaves no new or changed public content in the repository state.
  • A session that stages valid text still publishes a single fix, and a Spec with its sub-issue and blocking links, as it does now.
  • The publishing session still has the private record and the repository to work from.
  • The private-repository bigger-fix path behaves as it does now.

Out of scope

  • The private-repository path, where the session reuses and extends the finding's own issue.
  • Making check_public_fix_text catch paraphrased text.
  • Changing the staged-text format.

Activity

  1. added
    bugSomething isn't working
    ready-for-agentFully specified, ready for an AFK agent
    in-progressA Claim: thirdshift has taken this issue
    and removed
    ready-for-agentFully specified, ready for an AFK agent
    on Oct 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions