Skip to content

Leave Claude Code's own attribution out of factory pull requests and commits #937

Closed

Description

@JacobStephens2

This was generated by AI during triage.

Factory pull requests built with Claude carry Claude Code's own attribution as well as thirdshift's. Pull requests built with the other Harnesses carry only thirdshift's.

What happens now

  • thirdshift ends every factory pull request's body with Built with <harness> · <model> · <effort> <!-- thirdshift:built-with --> (src/pull_request.rs).
  • When Claude Code commits and opens pull requests, it adds its own attribution:
    • a 🤖 Generated with [Claude Code](https://claude.com/claude-code) line in the pull request body;
    • Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> trailers on its commits.
  • thirdshift doesn't set Claude Code's attribution. It passes Claude no --settings, and nothing in src/ or skills/ configures it.

Of the last 300 merged pull requests in this repository:

What to change

Have factory sessions on Claude leave out Claude Code's attribution, so that every factory pull request names what built it once, in the Built-with line, whatever the Harness.

  • Claude Code's attribution.commit and attribution.pr settings "change or hide" the commit trailer and the pull request line. includeCoAuthoredBy is deprecated in their favour (settings reference).
  • thirdshift could pass those settings for each session with --settings, which takes precedence over the user's own settings files.
  • Only factory sessions change. Claude Code run by hand keeps its defaults.

Why

  • One attribution, written by thirdshift, for every Harness. Today a pull request's attribution depends on which Harness built it.
  • Uniform commit history. Only Claude-built commits name a model as co-author.
  • Less to strip for add evals -integrate with langfuse / oss eval tool? #698's blind Grader. add evals -integrate with langfuse / oss eval tool? #698 plans a Grader for a sample of merged pull requests that must not see the Harness, Model or Effort. It will strip all three lines either way, because a missing line gives the Harness away as surely as a present one.

To decide

Related: #900, #698.

Activity

  1. JacobStephens2 commented on Oct 21, 2026

    @JacobStephens2
    OwnerAuthor

    This was generated by AI during triage.

    Agent Brief

    Category: enhancement
    Summary: Factory sessions on Claude Code leave out Claude Code's own commit and pull request attribution

    Current behavior:
    thirdshift ends every factory pull request's body with its own Built with <harness> · <model> · <effort> line, behind a thirdshift:built-with marker. When the Harness is Claude Code, Claude Code adds its own attribution too. That means a "🤖 Generated with Claude Code" line in pull request bodies it writes, and Co-Authored-By: Claude … trailers on its commits. Sessions on the other Harnesses add neither. thirdshift starts claude with no --settings, so Claude Code's defaults apply.

    Desired behavior:
    Every factory session on Claude Code is started with settings that turn off Claude Code's commit trailer and pull request attribution. A factory pull request then names what built it once, in thirdshift's Built-with line, whatever the Harness. Claude Code run by hand keeps its own defaults, and nothing replaces the removed lines.

    Key interfaces:

    • The arguments every Claude session runs with (claude_args). Pass the attribution settings with --settings, which takes precedence over the user's and the repository's settings files.
    • Claude Code's attribution settings: attribution.commit and attribution.pr, with includeCoAuthoredBy as the deprecated form. Confirm the keys, and the value that hides each line, against the claude version thirdshift supports, and record that version in the PR.
    • The prompts page shows session arguments, so regenerate it with UPDATE_PROMPTS=1 cargo test prompts_page.
    • The guide's description of how Claude sessions are started.

    Acceptance criteria:

    • Every factory session on Claude Code is started with the attribution settings, including the opening session, Repairs, Resumes and the review sessions. A test on the session arguments fails if they are removed.
    • The release summary's own Claude invocation changes only if it also writes commits or PR text.
    • Generated prompts are regenerated and cargo test prompts_page passes.

    Out of scope:

  2. added
    ready-for-agentFully specified, ready for an AFK agent
    and removed
    needs-triageMaintainer needs to evaluate this issue
    on Oct 21, 2026
  3. added a commit that references this issue on Oct 21, 2026
  4. added
    in-progressA Claim: thirdshift has taken this issue
    and removed
    ready-for-agentFully specified, ready for an AFK agent
    on Oct 22, 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

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions