Skip to content

Stage workflow reporting and bound same-session completion - #1203

Open
taras wants to merge 18 commits into
codex/claude-workflow-role-runtimefrom
codex/staged-submission-guide
Open

taras wants to merge 18 commits into
codex/claude-workflow-role-runtimefrom
codex/staged-submission-guide

Conversation

@taras

@taras taras commented Nov 9, 2026 •

Copy link
Copy Markdown
Owner

Why

Workflow roles receive result-format instructions before they need them. An independent reviewer can also finish a turn before returning its verdict.

What changes

  • Phase requests include work rules and a reference to a frozen submission guide. The role opens it when preparing a result, or earlier when a reporting rule blocks a work decision. An identical selected role brief appears once.
  • Claude role calls select the claude-workflow-role provider from the runtime base. The workflow tells roles to join foreground work before returning.
  • An exact progress reply reserves one five-minute completion turn in the same reviewer conversation. A second progress reply, timeout or failed resume holds the review.
  • An otherwise valid verdict can spend its existing finite allowance on shortening its summary. The completion turn spends none of that allowance. Reconciliation reads retained replies without prompting.

How it works

Phase components freeze and verify the submission guide around dispatch and acceptance. Delivery reserves the completion turn and each summary correction before prompting. It retains both replies and the source checks for acceptance, hold and reconciliation.

Review guide

Start with Phase/Instructions.md and Phase/SubmissionGuide.ts. Follow the provider selection in the role components, then read Delivery/Finish.md, Delivery/Response.md and Delivery/Reconcile.md together. The ACP spec addition here identifies where the example selects the provider.

How to verify it

  • The workflow suites exercise submission timing, role-guide deduplication, scoped Claude provider selection, cold reentry, progress continuation, summary repair and reconciliation. The focused run passed 9 tests and 24 steps. Session continuity passed 4 tests and 14 steps.

  • Fable independently passed signed workflow head 945b35d18367b6da75f57c2ae6d47d2145c956aa. It previously passed the original combined revision in a separate review.

  • The new head preserves the original combined head as its first parent and merges the runtime branch as its second parent. The complete tree is byte-for-byte identical to the pilots' pinned revision ce89bf1ae9b9ef03195c336ba745fdc10ca1c69c on main 88fa816edd01b13ee25dfc82ae836476e6fcd9ae.

  • GitHub CI passed on the new workflow head. The run was queued against pinned main before this PR was retargeted because CI only triggers for PRs targeting main. The workflow CI merge and the final stacked merge both have the pilot tree. The first Node 17/18 shard hit the 120-second Implementation fixture timeout tracked in Implementation Markdown journey intermittently exceeds 120s in CI #1143. The retry passed on the same main-target merge commit. First run · Passing retry

Scope

This PR depends on the standalone Claude workflow-role runtime. Runtime PR #1242 It contains the example composition, submission and review behavior, and example end-to-end tests. The pilots keep their existing combined pin.

Risks and limitations

Simulated tests cover continuation and hold behavior. Live reviewer continuation timing remains unmeasured.

Scope confirmation

  • The GitHub diff contains the workflow and its example coverage.
  • The reported checks and review match the published head and tree.

Refs #1199.

@github-actions

github-actions Bot commented Nov 9, 2026 •

Copy link
Copy Markdown

PR #1203: Stage workflow reporting and bound same-session completion

53 files, +976 / -99

Scope

🔴 PR has 1075 lines changed. Split into focused PRs.

🟡 1075 lines changed. PRs under 400 receive more thorough review.

🟡 53 files changed. Are all changes related?

Structural

Oxlint structural signals:

  • no-unused-vars ×3: packages/acp/src/provider.ts
  • no-empty-function ×2: packages/acp/src/provider.ts
  • no-unnecessary-type-assertion ×2: packages/cli/tests/support/fake-acp.ts

Slop

  • packages/acp/vendor/acpx/generated/ipc-BbYFsKOj.js:1699 — // XMD workflow role controls: preserve the explicit tool deny list.
  • packages/acp/vendor/acpx/generated/ipc-BbYFsKOj.js:3940 — // XMD workflow role controls: preserve the explicit tool deny list.
  • packages/acp/vendor/acpx/generated/ipc-BbYFsKOj.js:3942 — // XMD workflow role controls: preserve the explicit tool deny list.
  • packages/acp/vendor/acpx/generated/ipc-BbYFsKOj.js:3944 — // XMD workflow role controls: preserve the explicit tool deny list.
  • packages/acp/vendor/acpx/generated/queue-owner-runtime-B0mPqOu4.js:1270 — // XMD workflow role controls: preserve the explicit tool deny list.
  • packages/acp/vendor/acpx/generated/queue-owner-runtime-B0mPqOu4.js:4426 — // XMD workflow role controls: keep denials when turn state is cloned.
  • packages/acp/vendor/acpx/generated/queue-owner-runtime-B0mPqOu4.js:4680 — // XMD workflow role controls: preserve the explicit tool deny list.
  • packages/acp/vendor/acpx/generated/queue-owner-runtime-B0mPqOu4.js:4720 — // XMD workflow role controls: preserve the explicit tool deny list.
  • packages/acp/vendor/acpx/generated/queue-owner-runtime-B0mPqOu4.js:4731 — // XMD workflow role controls: preserve the explicit tool deny list.
  • packages/acp/vendor/acpx/generated/queue-owner-runtime-B0mPqOu4.js:4740 — // XMD workflow role controls: preserve the explicit tool deny list.
  • packages/acp/vendor/acpx/generated/session-options-BlnP3WAc.d.ts:169 — // XMD workflow role controls: preserve the explicit tool deny list.
  • packages/acp/vendor/acpx/generated/session-options-BlnP3WAc.d.ts:287 — // XMD workflow role controls: preserve the explicit tool deny list.
  • packages/acp/vendor/acpx/generated/session-options-BlnP3WAc.d.ts:343 — // XMD workflow role controls: preserve the explicit tool deny list.

Static Analysis

Oxlint: 55 diagnostics across 2 files (9 rules)
Density: 0.056 violations/added-line

consistent-function-scoping (20): packages/cli/tests/support/fake-acp.ts, packages/acp/src/provider.ts
no-useless-spread (10): packages/cli/tests/support/fake-acp.ts, packages/acp/src/provider.ts
no-shadow (8): packages/cli/tests/support/fake-acp.ts, packages/acp/src/provider.ts
unbound-method (7): packages/cli/tests/support/fake-acp.ts, packages/acp/src/provider.ts
no-unused-vars (3): packages/acp/src/provider.ts
no-empty-function (2): packages/acp/src/provider.ts
no-unnecessary-type-assertion (2): packages/cli/tests/support/fake-acp.ts
no-floating-promises (2): packages/acp/src/provider.ts
no-unnecessary-template-expression (1): packages/acp/src/provider.ts

Correctness

FILE: packages/cli/tests/support/fake-acp.ts, PATTERN: signal cluster, CONCERN: Multiple Oxlint violations in same file, QUESTION: Are these generated or unreviewed code fragments?
FILE: packages/acp/src/provider.ts, PATTERN: signal cluster, CONCERN: Multiple Oxlint violations in same file, QUESTION: Are these generated or unreviewed code fragments?

@taras
taras force-pushed the codex/staged-submission-guide branch from 606845d to 2cc94e2 Compare November 10, 2026 04:53
@taras taras changed the title Stage phase submission instructions in a frozen guide Stage workflow reporting and bound same-session completion Nov 10, 2026

@github-actions github-actions 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.

Found 12 redundant comments. Inline suggestions to remove them below.

const parsedSessionOptions = {};
if (typeof sessionOptions.model === "string") parsedSessionOptions.model = sessionOptions.model;
if (isStringArray(sessionOptions.allowed_tools)) parsedSessionOptions.allowed_tools = [...sessionOptions.allowed_tools];
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

const sessionOptions = {};
if (!assignSessionModel(sessionOptions, record.model)) return null;
if (!assignSessionAllowedTools(sessionOptions, record.allowedTools)) return null;
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

if (!assignSessionAllowedTools(sessionOptions, record.allowedTools)) return null;
// XMD workflow role controls: preserve the explicit tool deny list.
if (record.disallowedTools != null) {
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

if (record.disallowedTools != null) {
// XMD workflow role controls: preserve the explicit tool deny list.
if (!isStringArray(record.disallowedTools)) return null;
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

if (typeof options.model === "string" && options.model.trim().length > 0) target.model = options.model;
if (Array.isArray(options.allowedTools)) target.allowedTools = [...options.allowedTools];
// XMD role tool denials reach the supported Claude SDK option.
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

const sessionOptions = {};
assignDefinedOption(sessionOptions, "model", nonEmptyString(stored.model));
assignDefinedOption(sessionOptions, "allowedTools", storedAllowedTools(stored.allowed_tools));
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

const next = {
model: nonEmptyString(options.model),
allowed_tools: Array.isArray(options.allowedTools) ? [...options.allowedTools] : void 0,
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

sessionOptions?: {
model?: string;
allowedTools?: string[];
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

session_options?: {
model?: string;
allowed_tools?: string[];
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

type SessionAgentOptions = {
model?: string;
allowedTools?: string[];
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

@github-actions github-actions 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.

Found 12 redundant comments. Inline suggestions to remove them below.

const parsedSessionOptions = {};
if (typeof sessionOptions.model === "string") parsedSessionOptions.model = sessionOptions.model;
if (isStringArray(sessionOptions.allowed_tools)) parsedSessionOptions.allowed_tools = [...sessionOptions.allowed_tools];
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

const sessionOptions = {};
if (!assignSessionModel(sessionOptions, record.model)) return null;
if (!assignSessionAllowedTools(sessionOptions, record.allowedTools)) return null;
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

if (!assignSessionAllowedTools(sessionOptions, record.allowedTools)) return null;
// XMD workflow role controls: preserve the explicit tool deny list.
if (record.disallowedTools != null) {
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

if (record.disallowedTools != null) {
// XMD workflow role controls: preserve the explicit tool deny list.
if (!isStringArray(record.disallowedTools)) return null;
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

if (typeof options.model === "string" && options.model.trim().length > 0) target.model = options.model;
if (Array.isArray(options.allowedTools)) target.allowedTools = [...options.allowedTools];
// XMD role tool denials reach the supported Claude SDK option.
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

const sessionOptions = {};
assignDefinedOption(sessionOptions, "model", nonEmptyString(stored.model));
assignDefinedOption(sessionOptions, "allowedTools", storedAllowedTools(stored.allowed_tools));
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

const next = {
model: nonEmptyString(options.model),
allowed_tools: Array.isArray(options.allowedTools) ? [...options.allowedTools] : void 0,
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

sessionOptions?: {
model?: string;
allowedTools?: string[];
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

session_options?: {
model?: string;
allowed_tools?: string[];
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

type SessionAgentOptions = {
model?: string;
allowedTools?: string[];
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

@github-actions github-actions 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.

Found 11 redundant comments. Inline suggestions to remove them below.

const parsedSessionOptions = {};
if (typeof sessionOptions.model === "string") parsedSessionOptions.model = sessionOptions.model;
if (isStringArray(sessionOptions.allowed_tools)) parsedSessionOptions.allowed_tools = [...sessionOptions.allowed_tools];
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

const sessionOptions = {};
if (!assignSessionModel(sessionOptions, record.model)) return null;
if (!assignSessionAllowedTools(sessionOptions, record.allowedTools)) return null;
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

if (!assignSessionAllowedTools(sessionOptions, record.allowedTools)) return null;
// XMD workflow role controls: preserve the explicit tool deny list.
if (record.disallowedTools != null) {
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

if (record.disallowedTools != null) {
// XMD workflow role controls: preserve the explicit tool deny list.
if (!isStringArray(record.disallowedTools)) return null;
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

if (typeof options.model === "string" && options.model.trim().length > 0) target.model = options.model;
if (Array.isArray(options.allowedTools)) target.allowedTools = [...options.allowedTools];
// XMD role tool denials reach the supported Claude SDK option.
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

const sessionOptions = {};
assignDefinedOption(sessionOptions, "model", nonEmptyString(stored.model));
assignDefinedOption(sessionOptions, "allowedTools", storedAllowedTools(stored.allowed_tools));
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

const next = {
model: nonEmptyString(options.model),
allowed_tools: Array.isArray(options.allowedTools) ? [...options.allowedTools] : void 0,
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

sessionOptions?: {
model?: string;
allowedTools?: string[];
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

session_options?: {
model?: string;
allowed_tools?: string[];
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

type SessionAgentOptions = {
model?: string;
allowedTools?: string[];
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

@github-actions github-actions 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.

Found 13 redundant comments. Inline suggestions to remove them below.

const parsedSessionOptions = {};
if (typeof sessionOptions.model === "string") parsedSessionOptions.model = sessionOptions.model;
if (isStringArray(sessionOptions.allowed_tools)) parsedSessionOptions.allowed_tools = [...sessionOptions.allowed_tools];
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

const sessionOptions = {};
if (!assignSessionModel(sessionOptions, record.model)) return null;
if (!assignSessionAllowedTools(sessionOptions, record.allowedTools)) return null;
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

if (!assignSessionAllowedTools(sessionOptions, record.allowedTools)) return null;
// XMD workflow role controls: preserve the explicit tool deny list.
if (record.disallowedTools != null) {
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

if (record.disallowedTools != null) {
// XMD workflow role controls: preserve the explicit tool deny list.
if (!isStringArray(record.disallowedTools)) return null;
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

if (typeof options.model === "string" && options.model.trim().length > 0) target.model = options.model;
if (Array.isArray(options.allowedTools)) target.allowedTools = [...options.allowedTools];
// XMD role tool denials reach the supported Claude SDK option.
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

const next = {
model: nonEmptyString(options.model),
allowed_tools: Array.isArray(options.allowedTools) ? [...options.allowedTools] : void 0,
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

}
function hasPersistedSessionOptions(options) {
return options.model !== void 0 || options.allowed_tools !== void 0 || options.max_turns !== void 0 || options.system_prompt !== void 0 || options.env !== void 0;
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

sessionOptions?: {
model?: string;
allowedTools?: string[];
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

session_options?: {
model?: string;
allowed_tools?: string[];
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

type SessionAgentOptions = {
model?: string;
allowedTools?: string[];
// XMD workflow role controls: preserve the explicit tool deny list.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant comment — restates what the code does.

Suggested change
// XMD workflow role controls: preserve the explicit tool deny list.

@taras taras mentioned this pull request Nov 10, 2026
4 tasks done
Continue a progress-only independent review once
Keep the workflow role specification aligned with the deny list forwarded by ACPX.
@taras
taras marked this pull request as ready for review November 11, 2026 12:15
Preserve the original pilot tree and document where the example selects the scoped provider.
@taras
taras changed the base branch from main to codex/claude-workflow-role-runtime November 11, 2026 12:35

This branch has not been deployed

No deployments
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