Skip to content

Enable Vision's guarded temporary GitHub credential - #135

Merged
ayhammouda merged 4 commits into
mainfrom
codex/vision-temporary-auth
Oct 1, 2026
Merged

ayhammouda merged 4 commits into
mainfrom
codex/vision-temporary-auth

Conversation

@ayhammouda

@ayhammouda ayhammouda commented Oct 1, 2026 •

Copy link
Copy Markdown
Owner

Vision needs to keep working while GitHub App registration is deferred. The operator-authorized temporary mode captures Vision's existing credential in the root-owned broker, restricted to this repository. Workers never receive it.

Independent prepublication review remains mandatory. Temporary merge authorization requires a private receipt bound to the exact PR head, current main and installed broker policy. Public review comments cannot authorize a merge; all eleven required GitHub checks and resolved review conversations still apply. Releases remain disabled until App activation removes the temporary credential.

The installer scopes host MCP servers away from the project agents before discovery, preserving other configured agents' access and existing restrictions. This removes a false incomplete-MCP blocker without granting workers host connectors.

Validation: 537 local tests, Ruff and Pyright pass. All eleven required hosted checks pass on 2111a2d4f87b90296a0aae50a2779a3cd36e70c1. Focused independent static reviews found no blockers. Live checks confirmed root-only credential access, broker PR creation, refusal to merge without a private receipt, and a fresh verifier session without the MCP warning. Full independent verification and the SHA-matched broker merge are recorded separately on this PR. GitHub App positive-path validation remains deferred until registration.

@coderabbiteu

coderabbiteu Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Repository: ayhammouda/python-docs-mcp-server/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: faff38c2-4107-4ba5-8190-96bb37fe6e91

  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


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

@coderabbitai

coderabbitai Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: ayhammouda/python-docs-mcp-server/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 1d66d69c-f52c-49c8-84b8-b971cfad78e3

📥 Commits

Reviewing files that changed from the base of the PR and between 5b00c0e and e740e5d.

⛔ Files ignored due to path filters (5)
  • AGENT-EXECUTION-PIPELINE.md is excluded by none and included by none
  • ops/vision/README.md is excluded by none and included by none
  • ops/vision/configure_apps.py is excluded by none and included by none
  • ops/vision/control.py is excluded by none and included by none
  • ops/vision/install.py is excluded by none and included by none
📒 Files selected for processing (1)
  • tests/test_vision_control.py

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The test suite adds coverage for temporary-token authentication, verification receipts, and temporary-to-App activation lifecycle behavior.

Changes

Vision control tests

Layer / File(s) Summary
Authentication and receipt test coverage
tests/test_vision_control.py
Tests cover temporary-token dispatch restrictions, verification receipt validation, and verifier configuration for malformed input.
Temporary and App activation lifecycle
tests/test_vision_control.py
Tests cover temporary credential storage, activation cleanup and retention, App configuration checks, and required status checks.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Feature

Merge Risk: ⚪ Minimal · up to e740e

This change adds regression tests for temporary authentication, verification receipts, and activation lifecycle behavior. It does not alter runtime behavior, and no actionable merge-blocking risk was found in the supplied test changes.

Security Architecture Review

Security architecture risk: 🟡 Moderate · up to e740e

Credentials remain behind a restricted broker, and merges require trusted verification. However, operator activation is not coordinated with in-flight broker operations, weakening the guarantee that disabling readiness stops writes. Live deployment confirmation remains incomplete.

Retained concerns

  • Medium · security · inferred: Operator App activation does not acquire the broker’s operation lock. An admitted merge can pass the readiness gate, wait on GitHub reads, then consume a valid temporary receipt and finish after activation removes readiness and fails while retaining the credential. The marker blocks new requests but does not revoke this in-flight authorization. Exact-head verification and hosted checks still constrain the merge; credential theft or an unreviewed merge is not established.
Security review details

Security Blast Radius

  • observed — The intended broker API targets one fixed repository. Activation also changes that repository’s required verifier binding, release-tag rules and package deployment policy. The temporary account credential’s intrinsic authority beyond this repository is not constrained or established by the capture checks.

Security Findings and Attack Paths

  • inferred — The identified transition path requires an authorized owner worker request overlapping a trusted operator’s activation. It can preserve an admitted merge after readiness is withdrawn, but does not establish public unauthenticated access, receipt forgery or bypass of exact-head verification.

Trust Boundaries and Controls

  • observed — The worker-facing entrypoint enforces caller identity, request size, operation validation and readiness. Merge authorization consumes trusted verification state and sends the exact head SHA to GitHub. Whether live hosted settings preserve all intended checks was not independently verified.

Hardening Proposals

  • proposed — Coordinate operator credential transitions with the broker’s operation lock, defining whether admitted operations drain or are revoked before readiness is withdrawn. Specify recovery for partially applied remote policy and interrupted state writes.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 8 functions across 1 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the main objective: enabling Vision's guarded temporary GitHub credential mode. It is concise and specific, and it matches the stated pull request objective and added test…
  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


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.

@ayhammouda

Copy link
Copy Markdown
Owner Author

Vision — automated project maintainer

Independent verification (temporary credential): failure

Head: 1659086bef00113ca4fd75317f7e13faf63a4822; main: 5b00c0e131a4338fc37fb65790a58138b23c2bc4.

{
  "approved": false,
  "summary": "ValueError: Independent reviewer did not approve complete current-head evidence"
}

@ayhammouda

Copy link
Copy Markdown
Owner Author

Vision — automated project maintainer

Independent verification (temporary credential): failure

Head: 5265d1cfaecce3ed8a8f3c7d1c352893486f76ff; main: 5b00c0e131a4338fc37fb65790a58138b23c2bc4.

{
  "approved": false,
  "summary": "ValueError: Independent review rejected: [\"No trusted evidence establishes Aymen's authorization to use the existing account-scoped credential or replace the verifier-App merge gate. The owner rationale and PR text cannot establish that authority.\", 'The new tests mock verification and do not exercise temporary credential capture, file permissions, or the App-transition lifecycle. Live broker acceptance evidence is still pending.']"
}

@ayhammouda

Copy link
Copy Markdown
Owner Author

Vision — automated project maintainer

Independent verification (temporary credential): failure

Head: e740e5d47a8a162124131e001bc473536020876a; main: 5b00c0e131a4338fc37fb65790a58138b23c2bc4.

{
  "approved": false,
  "summary": "ValueError: Independent review rejected: ['Host policy omitted configured MCP tools for this run. Report to the operator; no MCP-backed work was performed.']"
}

@ayhammouda

Copy link
Copy Markdown
Owner Author

Vision — automated project maintainer

Independent verification (temporary credential): success

Head: 2111a2d4f87b90296a0aae50a2779a3cd36e70c1; main: 5b00c0e131a4338fc37fb65790a58138b23c2bc4.

{
  "head_sha": "2111a2d4f87b90296a0aae50a2779a3cd36e70c1",
  "base_sha": "5b00c0e131a4338fc37fb65790a58138b23c2bc4",
  "approved": true,
  "summary": "Reviewed the complete six-file diff against current main. Temporary authentication keeps the credential in the root-owned broker, binds merge receipts to head, main and installed policy, and blocks releases; the MCP scoping change preserves tested existing restrictions. Fresh locked checks passed. The first full test run had 536 passes and one conditional skip; a repeat passed all 537. All 11 hosted checks passed. Product regression used a cached docs index, so this run does not evidence a fresh index build. The owner\u2019s target-host canary and credential-permission claims were not independently accessible.",
  "commands": [
    {
      "command": "git clone --depth=1 https://github.com/ayhammouda/python-docs-mcp-server.git repo",
      "exit_code": 0
    },
    {
      "command": "git fetch --depth=1 origin 2111a2d4f87b90296a0aae50a2779a3cd36e70c1 5b00c0e131a4338fc37fb65790a58138b23c2bc4",
      "exit_code": 0
    },
    {
      "command": "git diff --check 5b00c0e131a4338fc37fb65790a58138b23c2bc4 2111a2d4f87b90296a0aae50a2779a3cd36e70c1",
      "exit_code": 0
    },
    {
      "command": "/usr/local/bin/uv sync --locked --dev",
      "exit_code": 0
    },
    {
      "command": "/usr/local/bin/uv run --locked ruff check src/ tests/ benchmarks/ ops/ .github/scripts/",
      "exit_code": 0
    },
    {
      "command": "/usr/local/bin/uv run --locked pyright src/ benchmarks/",
      "exit_code": 0
    },
    {
      "command": "/usr/local/bin/uv run --locked pytest --tb=short -q",
      "exit_code": 0
    },
    {
      "command": "/usr/local/bin/uv run --locked pytest --tb=short -q -rs",
      "exit_code": 0
    },
    {
      "command": "/usr/local/bin/uv run --locked pytest tests/test_vision_control.py -q",
      "exit_code": 0
    },
    {
      "command": "/usr/local/bin/uv run --locked python -m benchmarks validate-corpus --corpus docs/benchmarks/corpus.yml --schema docs/benchmarks/corpus.schema.json",
      "exit_code": 0
    },
    {
      "command": "/usr/local/bin/uv build",
      "exit_code": 0
    }
  ],
  "blockers": []
}

@ayhammouda
ayhammouda merged commit b118a2d into main Oct 1, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant