Skip to content

chore(quest): plan read-only pull-request CI - #7116

Merged
kixelated merged 3 commits into
mainfrom
quest-plan/read-only-secrets
Oct 28, 2026
Merged

kixelated merged 3 commits into
mainfrom
quest-plan/read-only-secrets

Conversation

@kixelated

Copy link
Copy Markdown
Collaborator

Plans Read-only pull-request CI [S], ranked first in the CI epic.

Why

Agents and the kix.quest App push branches to this repository itself. GitHub hands a branch's workflows the repository's secrets, so unreviewed code can reach write credentials unless pull-request CI stays read-only.

kixelated/quest's trust audit made read-only CI the rule for every repository enrolled in kix, and moq-dev/moq is a pilot repository. The audit found that this repository breaks the rule today:

  • Write-capable secrets at repository and organization level, such as CARGO_REGISTRY_TOKEN, CLOUDFLARE_API_TOKEN, APP_PRIVATE_KEY and SIGNING_KEY.
  • The pub.dev and pypi environments have no deployment branch policy, so any branch can claim the OIDC identity a registry may trust.
  • The token setting that lets workflows approve pull requests is on.

Decisions (maintainer, 2026-10-28)

moq-dev/moq's repo-level write secrets

  • ✅ Plan a moq quest
  • Fix the settings now
  • Later

Rank in quest/m0/ci

  • ✅ First
  • Last

Checks

quest check passes (618 documents).

🤖 Generated with Claude Code

(written by Claude Opus 5.5)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 20 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 146575a0-c1fd-4325-82a7-34778774448d
Commits

Reviewing files that changed from the base of the PR and between 2042f96 and 28efd70.

Files selected for processing: 2
  • quest/m0/ci/README.md
  • quest/m0/ci/read-only-secrets.md
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-28T17:44:18.221161Z 28efd70 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9f3c636abd

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread quest/m0/ci/read-only-secrets.md Outdated
Comment on lines +37 to +39
`APP_PRIVATE_KEY` and `DISCORD_WEBHOOK`. The App key can write, so scope it
the same way, or create its token only in jobs gated to a protected
environment.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Require isolating the App private key, not just token creation

If the organization-level APP_PRIVATE_KEY remains accessible to this repository, gating the existing token-creation jobs behind an environment does not protect it from an unreviewed same-repository branch. That branch can add its own workflow referencing the organization secret and mint a write token without using the gated job, just as .github/workflows/release-rs.yml currently mints one with actions/create-github-app-token. Remove token-creation gating as an alternative to secret isolation: the plan must require removing this repository's access to the organization-level key and supplying it only through a protected environment.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed: a visible organization secret can be read by any workflow a branch adds, so gating the token-minting jobs does not protect it. Fixed in fc50673: the plan now requires removing this repository's access to the organization APP_PRIVATE_KEY and supplying the key only through a protected environment.

(written by Claude Opus 5.5)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review by review (OpenAI)

Reviewed commit: 9f3c636abdc719d08c9b0e8b70630042e878f6dd.

The direction is sound: isolate write credentials in protected environments and distinguish genuinely read-only cache credentials from a client's read-only mode. One actionable plan flaw remains, already reported independently in this finding: quest/m0/ci/read-only-secrets.md:37–39 must require isolating the organization App private key itself, not offer gating existing token-creation jobs as an alternative. An unreviewed branch can mint its own token while the key remains available. I confirmed the current release workflow consumes that key directly; no duplicate inline comment added. No additional actionable findings in the changed plan.

Verification: inspected the documentation diff, release workflow, related cache plan and existing review. Did not run tests or a probe workflow, inspect live secret/environment settings, or verify publisher trust policies; this planning PR does not itself enforce the intended boundary.

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review by review (OpenAI)

Reviewed commit: fc50673cae3f195722f4f2f3d04f3af936fbccee, compared with my previous review at 9f3c636abdc719d08c9b0e8b70630042e878f6dd.

Fixed in the plan: quest/m0/ci/read-only-secrets.md:36–40 now requires removing repository access to the organization App private key and providing it only through a protected environment, resolving the previously referenced P2. This is the right boundary; gating token-minting jobs alone is explicitly rejected. No new actionable findings in this focused update.

Verification: compared the single changed document and rechecked PR state/head/reviews. No tests or probe workflow run; live secret isolation, environment policies and publisher trust were not verified. The documentation fix is not evidence that those operational changes are deployed.

@kixelated

Copy link
Copy Markdown
Collaborator Author

Merge summary:

  • Plans Keep pull-request CI read-only [S], ranked first in quest/m0/ci, per the maintainer's 2026-10-28 decisions (plan a moq quest; rank first).
  • Codex review: one P2, fixed in fc50673. The organization APP_PRIVATE_KEY must be removed from this repository's reach and supplied only through a protected environment; gating the token-minting jobs is no longer offered as an alternative.
  • just ci and quest check (618 documents) pass on fc50673; all PR checks green.

(written by Claude Opus 5.5)

@kixelated
kixelated added this pull request to the merge queue Oct 28, 2026
Merged via the queue into main with commit 053ad9c Oct 28, 2026
10 checks passed
@kixelated
kixelated deleted the quest-plan/read-only-secrets branch October 28, 2026 19:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant