Skip to content

feat: allowlisted cross-vendor bridge for review panels - #4

Merged
tacheshun merged 2 commits into
mainfrom
feat/bridge
Sep 30, 2026
Merged

tacheshun merged 2 commits into
mainfrom
feat/bridge

Conversation

@tacheshun

Copy link
Copy Markdown
Owner

Review panels (interrogate, arena, architect, reflect) can add reviewers from other model families by calling their CLIs headless, but only CLIs listed in ~/.config/tstack/bridge. Off by default. Also removes the guide illustrations.

Verified live in a scratch project: bridge off (3 lens reviewers, "Bridge: off"), codex only (an OpenAI reviewer ran, claude/copilot never called), and a listed CLI that failed (dropped and named, verdict still delivered). Stacked on #3.

🤖 Generated with Claude Code

tacheshun and others added 2 commits September 30, 2026 11:48
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 30, 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-09-30T09:31:49.266263Z 1d057cb PR opened
🔒 Security Review ✅ Completed 2026-09-30T09:40:25.589748Z 1d057cb PR opened
ℹ️ 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.

Base automatically changed from port/harness-neutral to main September 30, 2026 09:30
@tacheshun
tacheshun merged commit 0488132 into main Sep 30, 2026
2 checks passed
@tacheshun
tacheshun deleted the feat/bridge branch September 30, 2026 09:30

@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: 1d057cb3f0

ℹ️ 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".

| `codex` | OpenAI | `codex exec --sandbox read-only --skip-git-repo-check - < "$prompt_file"` |
| `copilot` | chosen with `--model` | `copilot -p "$(cat "$prompt_file")" --model <model> -s --no-ask-user --deny-tool=write --deny-tool=shell` |

Bridged members are read-only reviewers: every command above runs without write or shell access. Never add flags that grant it.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Actually disable shell access for Codex reviewers

When codex is allowlisted, the no-shell guarantee is false: /opt/codex/bin/codex exec --help describes --sandbox as selecting the policy for “model-generated shell commands,” so read-only prevents filesystem writes but does not remove the shell tool. Because the bridge feeds raw diffs and other potentially untrusted content to the model, a prompt-injected review can still execute read commands and expose local data in its output despite users being told bridged members have no shell access; use a mode that actually disables command execution or explicitly treat this bridge as shell-capable and harden it accordingly.

AGENTS.md reference: AGENTS.md:L15-L15

Useful? React with 👍 / 👎.

Comment thread skills/arena/SKILL.md
1. State the artifact each candidate is producing.
2. Derive the rubric. State what success looks like for *this* task, then turn it into 3-6 concrete gradeable criteria. The rubric is the picker's tool in Phase D. Candidates only see the task.
3. Pick the runners. Default to three host subagents on the strongest model. Spawn more when the arena covers multiple design directions. Same model N times when the work is generation-bound rather than judgment-sensitive.
3. Pick the runners. Default to three host subagents on the strongest model. Add bridged runners per [the bridge](../interrogate/references/bridge.md). Spawn more when the arena covers multiple design directions. Same model N times when the work is generation-bound rather than judgment-sensitive.

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 Keep read-only bridge members out of arena runners

When a different-family CLI is allowlisted and /arena (or /architect through arena) produces code, this adds that CLI as a candidate, while the next phase requires every candidate to write its artifact to an isolated output path. The mandatory bridge commands explicitly prohibit writes, so the bridged runner cannot create the artifact that Phase D must compare and will either drop out or return uncaptured prose; use bridged CLIs only for the read-only Phase C judge, or define a stdout/patch capture protocol for candidates.

AGENTS.md reference: AGENTS.md:L15-L15

Useful? React with 👍 / 👎.

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