Skip to main content
Glama

codex-reasonix-mcp

CI CodeQL License: MIT

Codex supervising a Reasonix worker through the security-first MCP bridge

codex-reasonix-mcp is a security-first MCP bridge that lets Codex supervise Reasonix as the implementation worker. Codex owns the immutable contract, review, and final commit decision. Reasonix works in an isolated Git worktree through ACP Goal mode. The bridge never pushes, merges, or changes the caller's main worktree.

The core is generic to Git repositories. It contains no application-specific paths, LLM router, native-Windows implementation, or Codex source modification.

Release status

The last published stable npm release is 0.1.1. This source tree is prepared as 0.2.0-rc.4; that version is not available from npm until its GitHub prerelease and trusted-publishing workflow complete successfully. Official Reasonix v1.19.0 remains the documented compatibility baseline, while runtime capability checks—not a version string—remain authoritative.

Related MCP server: Codex Gemini Delegator V2

Requirements

  • Node.js 22 or newer

  • pnpm 10 for source development

  • Git 2.36 or newer

  • Linux, macOS, or Windows through WSL; native Windows is rejected

  • Reasonix v1.19.0 or a compatible newer build with ACP v1 supervisor/status capabilities and static command metadata v1

  • Bubblewrap on Linux/WSL or Seatbelt on macOS (required: verification, the secret scanner, and Git hooks execute inside the OS command sandbox and fail closed when no engine is available)

  • A configured Reasonix provider exposing the selected model

Reasonix, provider credentials, and provider billing remain user-managed. This package neither downloads nor bundles Reasonix.

Security posture

Repository-controlled content never executes unsandboxed: verification commands, the external secret scanner, and (when explicitly enabled) Git hooks run inside a network-disabled, filesystem-restricted OS sandbox with hidden credential stores. Git hooks are off by default (CODEX_REASONIX_RUN_GIT_HOOKS=true re-enables them through the sandbox). The Reasonix worker receives an explicitly allowlisted environment (CODEX_REASONIX_ENV_ALLOWLIST) instead of the host environment; injection variables are hard-denied. Finalize approvals and pause acknowledgments are bound to reviewed-snapshot and pause tokens, journal appends are crash-consistent, and the bridge commit requires the exact task branch.

See docs/security.md for the threat model, the proof matrix, and the configuration knobs. The matrix gates run on Linux and macOS in CI.

Install for Codex

Use the published stable package today:

codex mcp add reasonix-worker -- npx -y codex-reasonix-mcp@0.1.1

For a local checkout of this release-candidate tree:

pnpm install --frozen-lockfile
pnpm build
codex mcp add reasonix-worker -- node /absolute/path/to/codex-reasonix-mcp/dist/index.js

After 0.2.0-rc.4 is actually published, consumers can pin that exact version instead of relying on a moving dist-tag. Prereleases publish under next; stable releases publish under latest.

Diagnostics

Standard doctor is local-only and does not create an ACP session or call a provider:

codex-reasonix-mcp doctor

It checks Node, Git, platform/WSL, the Reasonix binary and supervisor flags, OS sandbox availability, state permissions, network posture, and that Codex has tool_timeout_sec = 900 under [mcp_servers.reasonix-worker]. This explicit value is required even when a Codex release provides a shorter default.

The deep lane is explicit, bounded to one Goal, 50,000 cumulative provider tokens, and ten minutes, and may incur provider cost:

codex-reasonix-mcp doctor --deep --allow-provider-call

It creates temporary source/state, proves a structured edit, static command, exact verification, final worker commit, and unchanged source repository, reports duration/usage/estimated cost, and always attempts cleanup. This lane is never implied by standard doctor. Failure reports preserve only bounded, privacy-safe partial proof and event-type diagnostics before cleanup.

MCP surface

The reasonix_worker server exposes exactly three tools:

  • reasonix_delegate validates TaskContractV1, creates or resumes the isolated task, and by default waits for review, interaction, failure, or a bounded timeout.

  • reasonix_control steers, answers an interaction, cancels, finalizes, or closes a task. At most two post-review repair rounds are accepted.

  • reasonix_inspect reads bounded status, evidence, interactions, collision evidence, and optional paginated diffs. Events are opt-in.

Each tool advertises a concrete success schema and every successful response contains matching structuredContent. Errors remain isError responses with a redacted code, message, retryable, closed-enum next_action, and optional safe details. Delegate/control are annotated mutating, destructive, non-idempotent, and open-world; inspect is read-only, idempotent, and closed-world.

Codex calls reasonix_delegate only after explicit user request or approval for Reasonix implementation. Delegate and finalization derive repository authority from codex/sandbox-state-meta; no model-provided repository path is accepted.

The normal success path is exactly two long-running calls: one delegate with the default wait_mode: "review", then one finalize that waits for a terminal result and returns the worker commit hash. Finalize echoes the reviewed snapshot by mapping review_revision to expected_review_revision and review_tree_hash to expected_review_tree_hash. New tasks run on the worker_lane: "fast" (direct edits in Reasonix economy + normal mode, no Goal/AutoResearch/ subagents, 600-second default deadline); choose worker_lane: "deep" only for explicitly long-horizon Delivery + Goal work (3,600-second default). reasoning_effort is selected per task (low, medium, high, or max); precedence is task field, then CODEX_REASONIX_EFFORT, then medium. Choose the lowest sufficient effort. execution_timeout_seconds is a persisted per-task execution deadline; new tasks default by lane (600 fast / 3,600 deep) and may request 60–14,400 seconds. The separate delegate wait remains bounded to 600 seconds: if it expires, the call returns a recoverable running view while the worker continues. Re-delegating the same immutable task can wait again without changing its stored execution profile. There is no hard worker token ceiling. path_base defaults to the invocation cwd; use repository only for legacy repository-root path semantics. Inspect/steer are recovery tools, not happy-path polling steps.

If finalization fails, keep the retained task at review, inspect or repair it there, and finalize again using the newly reviewed snapshot. Do not manually copy the diff into the source checkout and do not close the task as a recovery shortcut.

Completion creates a commit on the retained worker branch. It does not integrate the caller's checkout: after reviewing the returned hash, Codex may explicitly git cherry-pick <hash>. The bridge never pushes or merges.

Shell-first supervision

Reasonix shell requests must carry private _meta.reasonix.io static argv v1 metadata and a cwd inside the worker worktree. The bridge then applies this precedence:

  1. Audited reads such as safe rg, non-in-place sed, cat, ls, safe find, and sanitized Git reads receive one-time approval.

  2. Tests, builds, formatters, package managers, project scripts, and restricted env wrappers require an exact argv plus cwd match in contract verification or allowed_commands.

  3. Git mutations or ref/history rewrites, gh, remotes, publish/release, network access, credentials, privilege escalation, destructive filesystem operations, shell/eval, inline interpreters, cwd escape, and metadata mismatch are always denied. A contract cannot override these rules.

  4. Unknown executables are denied with a recovery hint.

Every allowed command has a watchdog and immediate post-command scope, symlink, size, secret, and source-collision checks. Repeated identical immutable denials receive one recovery steer; the third denial in the same prompt cancels the turn and pauses the task instead of opening a permission interaction.

allowed_commands expands execution permission only. Verification commands are implicitly allowed and remain the sole source of automated acceptance evidence. See task contracts.

Collision safety and optional Codex hook

The bridge compares source dirty paths and committed movement since the task's base against write_scope on resume, before and after worker mutation, at review readiness, and throughout finalization. Overlap pauses or blocks the task without reset, stash, or deletion. This core scanner is authoritative.

An optional user hook provides an earlier guardrail for Codex Bash and apply_patch calls:

codex-reasonix-mcp hooks install --user
codex-reasonix-mcp hooks install --user --apply
codex-reasonix-mcp hooks status --user

Install/uninstall are dry runs without --apply. Installation atomically merges ~/.codex/hooks.json, preserves third-party hooks, and installs a versioned runtime in private state. You must still inspect and trust it manually through Codex /hooks; the installer does not bypass trust. The hook is a guardrail, never the collision authority.

Task retention

codex-reasonix-mcp task list
codex-reasonix-mcp task list --all --json
codex-reasonix-mcp task archive <id>
codex-reasonix-mcp task archive <id> --apply
codex-reasonix-mcp task prune --older-than 30d
codex-reasonix-mcp task prune --older-than 30d --apply

List shows active tasks by default; --all includes terminal live tasks, archives, and tombstones. Archive accepts only a terminal task whose worker worktree is clean or missing. It moves the full audit atomically and may detach a clean worktree, but never deletes the branch, ref, or commit. Prune applies only to archives at least the requested age and replaces them with permanent, integrity-bound tombstones. Mutations are dry runs unless --apply is present.

Local data and metrics

Task state uses a validated, version-gated v2 schema. Valid v1 records migrate atomically on read; corrupt, noncanonical, and unknown future versions fail closed. Private local metrics record only closed numeric/outcome classes for permissions, denial loops, commands/timeouts, collisions, lifecycle duration, verification, and provider usage. They hash task identity and never store raw prompts, argv, command output, secrets, or file contents. There is no telemetry or upload.

Develop

corepack enable
pnpm install --frozen-lockfile
pnpm check
pnpm audit --audit-level high

pnpm check includes lint, formatting, TypeScript, V8 coverage, build, package allowlist, and pack dry-run. Coverage minimums are 80% for lines, statements, and functions and 75% for branches. CI runs Verify on Node 22/24 Linux and Node 22 macOS, plus dependency audit and CodeQL—the five protected checks expected by the release train.

GitHub OIDC trusted publishing uses provenance and no long-lived npm token. The release workflow validates exact v<package-version> tags and maps prereleases to next and stable versions to latest. No local npm publish is part of the release process.

See architecture, configuration, security, troubleshooting, and CONTRIBUTING.md.

Community

License

MIT. See LICENSE.

Available Tools

3 tools
reasonix_controlControl a Reasonix taskA
Destructive

Control a task created by reasonix_delegate. On the default happy path, call finalize once after reviewing the returned bundle; finalize waits for a committed terminal result. For finalize, copy review_revision to expected_review_revision and review_tree_hash to expected_review_tree_hash. finalize accepts any valid acceptance id in approved_review_criteria; automated ids are ignored for approval but every review-evidence criterion from required_review_criteria must be approved. If finalize fails, preserve the task at review, inspect or repair it there, then retry with the new snapshot; never copy the diff manually into the source checkout or close the task. Use respond, cancel, close, or steer only for explicit recovery or interaction handling. The returned commit is isolated and must be cherry-picked explicitly; this tool never merges or pushes.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
answerNoOptional free-form answer for action respond; omit for other actions.
messageNoRequired when action is steer; omit for other actions.
task_idYes
decisionNoRequired when action is respond; omit for other actions.
option_idNoOptional offered option for action respond; omit for other actions.
commit_messageNoOptional commit message for action finalize; omit for other actions.
interaction_idNoRequired when action is respond; omit for other actions.
review_summaryNoRequired when action is finalize; omit for other actions.
wait_timeout_secondsNoOptional wait timeout for action finalize; omit for other actions.
approved_review_criteriaNoRequired when action is finalize; omit for other actions. Any valid acceptance id is accepted; automated ids are ignored for approval, but every review-evidence criterion must be present.
expected_review_revisionNoRequired when action is finalize: copy review_revision from the reviewed task view. Omit for other actions.
expected_review_tree_hashNoRequired when action is finalize: copy review_tree_hash from the reviewed task view. Omit for other actions.

Output Schema

ParametersJSON Schema
NameRequiredDescription
phaseYes
stateYes
branchYes
reasonNo
task_idYes
worktreeYes
session_idNo
updated_atYes
commit_hashNo
worker_laneYes
contract_hashYes
repair_roundsYes
repository_idYes
pause_revisionNo
review_revisionNo
review_tree_hashNo
source_collisionNo
pause_reason_hashNo
reasonix_work_modeNo
integration_commandNo
reasonix_session_modeNo
execution_timeout_secondsYes
effective_reasoning_effortYes
requested_reasoning_effortYes
source_checkout_integratedYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds rich behavioral detail beyond the annotations: finalize 'waits for a committed terminal result', automated ids are 'ignored for approval but every review-evidence criterion must be approved', and the returned commit is 'isolated and must be cherry-picked explicitly; this tool never merges or pushes'. These details are not present in the structured annotations and materially inform the agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is six sentences but every sentence carries operational value: the happy path, finalize parameter copying, failure recovery, and commit isolation warning. It is front-loaded with the most used action (finalize) and avoids redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 actions, 13 parameters) and the existing output schema, the description is remarkably complete. It covers the default path, failure handling with explicit retry guidance, criteria approval semantics, and the tool's non-merging behavior. It leaves no critical operational gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 85%, and the schema already documents parameters like approved_review_criteria and expected_review_revision with similar wording. The description adds workflow-level context (e.g., 'copy review_revision to expected_review_revision'), but this largely mirrors the schema's own parameter descriptions. Hence, it meets the baseline without significantly enhancing parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Control a task created by reasonix_delegate', clearly scoping the tool to lifecycle management of delegated tasks. It lists the five actions (steer, respond, cancel, finalize, close) and describes the primary happy path, distinguishing it from siblings reasonix_inspect and reasonix_delegate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage context: the happy path is 'call finalize once after reviewing the returned bundle'. It references reasonix_delegate as the task origin and reasonix_inspect for repair ('inspect or repair it there'). It states when to use the other actions: 'Use respond, cancel, close, or steer only for explicit recovery or interaction handling.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reasonix_delegateDelegate a contract to ReasonixA
Destructive

After explicit user approval, delegate one immutable TaskContractV1 to an isolated Reasonix edit worker. For a trivial edit whose local context is already verified, do one focused preflight and delegate directly; do not browse docs or memory solely to construct the contract. write_scope is the exclusive write allowlist and already denies every other path. forbidden_scope is only for sensitive carve-outs inside broader write scopes; never use **/* or another catch-all that matches a concrete write_scope target. Default wait_mode=review holds this call until review, interaction, failure, or timeout; a wait timeout is recoverable and does not cancel the worker. New tasks default to worker_lane=fast (direct edits; no Goal, AutoResearch, review/task skills, or subagents); use worker_lane=deep only for explicitly long-horizon delivery/goal work. Select the lowest reasoning_effort adequate for the task (low is the lowest supported). Set execution_timeout_seconds proportionately (fast default 600, deep default 3600, maximum 14400); omitted resumes retain the stored deadline. Use background only when the caller intentionally wants asynchronous recovery flow. Contract verification and allowed_commands run as exact static argv with no shell: sh -c/bash -c/eval, pipes, redirection, and inline interpreters are rejected. For byte-exact file content, use file_assertions instead of shell comparison commands.

ParametersJSON Schema
NameRequiredDescriptionDefault
resumeNo
task_idYes
base_refNo
contractYes
path_baseNoDefaults to cwd for new tasks; omitted legacy resumes preserve stored semantics.
wait_modeNoreview
worker_laneNoWorker execution lane. fast (default) is a direct-edit Reasonix session without Goal/AutoResearch/subagents; deep is an explicit long-horizon Goal session. Omitted resumes preserve the stored lane.
pause_revisionNo
reasoning_effortNoReasoning effort; low is the lowest supported value for new tasks.
pause_reason_hashNo
wait_timeout_secondsNo
execution_timeout_secondsNoTask execution deadline. New fast-lane tasks default to 600 seconds and deep-lane tasks to 3600 seconds; omitted resumes preserve the stored value. A wait timeout never cancels the worker.

Output Schema

ParametersJSON Schema
NameRequiredDescription
diffNo
phaseYes
risksNo
stateYes
usageNo
branchYes
reasonNo
summaryNo
task_idYes
worktreeYes
diff_statNo
timed_outNo
session_idNo
updated_atYes
commit_hashNo
worker_laneYes
changed_filesNo
contract_hashYes
repair_roundsYes
repository_idYes
pause_revisionNo
resume_requiredNo
review_revisionNo
inspect_requiredNo
review_tree_hashNo
source_collisionNo
pause_reason_hashNo
active_interactionNo
reasonix_work_modeNo
review_diff_sha256No
integration_commandNo
reasonix_session_modeNo
required_review_criteriaNo
execution_timeout_secondsYes
effective_reasoning_effortYes
requested_reasoning_effortYes
source_checkout_integratedYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond annotations by disclosing key behaviors: write_scope is an exclusive allowlist, forbidden_scope is only for sensitive carve-outs, commands are exact static argv with no shell/pipes/redirection, wait_timeout is recoverable and does not cancel the worker, and omitted resumes preserve stored settings. It also notes the requirement for 'explicit user approval,' which is critical context. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and front-loaded with the core purpose, followed by practical operational rules. It is longer than ideal and runs as a single block of text, but every sentence adds substantive guidance—defaults, constraints, and security invariants—so the length is justified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (12 parameters, nested contract object, multiple enums, output schema, annotations), the description covers the most decision-relevant aspects: task scoping, worker behavior, timeouts, resume semantics, and command execution security. It gives enough context for an agent to select and invoke the tool correctly without requiring external documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%, but the description compensates richly. It explains the semantics of write_scope and forbidden_scope, defaults for wait_mode, worker_lane, reasoning_effort (low is lowest), execution_timeout_seconds defaults (fast 600, deep 3600, max 14400), and advises file_assertions for byte-exact content. This adds meaning far beyond raw schema names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action: 'delegate one immutable TaskContractV1 to an isolated Reasonix edit worker' after explicit user approval. This clearly distinguishes the tool from siblings (inspect, control) by naming the delegated contract workflow and the worker isolation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides strong situational guidance: for trivial edits with verified local context, do one focused preflight and delegate directly; avoid browsing docs/memory solely to construct the contract. It also differentiates worker_lane=fast versus deep, explains background mode, and specifies when deep is needed ('explicitly long-horizon delivery/goal work').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reasonix_inspectInspect a Reasonix taskA
Read-onlyIdempotent

Recovery-only bounded inspection of status, evidence, interactions, and optional paginated diff or event output. Events are opt-in. The default two-call happy path uses no inspect polling.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNo
includeNo
task_idYes
wait_msNo
max_bytesNo
wait_untilNochange

Output Schema

ParametersJSON Schema
NameRequiredDescription
task_idYes
sectionsYes
truncatedYes
updated_atYes
next_cursorNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool as read-only and idempotent, and the description adds useful behavioral context: 'bounded' suggests output limits, 'Events are opt-in' indicates default behavior, and the note about the default happy path avoiding inspect polling clarifies the expected call pattern. This goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise, front-loaded sentences that pack maximum information without wasted words. Every phrase contributes meaning, from 'recovery-only' to 'no inspect polling'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the tool is complex (6 parameters, 11 include enums, wait_until). The description gives a strong high-level overview but omits many include options and polling semantics (e.g., how wait_until interacts with wait_ms). It feels too terse to be fully self-sufficient for such a feature-rich tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description carries the full burden, and it does provide semantic hints (e.g., 'optional paginated diff or event output' maps to include/cursor, 'bounded' relates to max_bytes, 'Events are opt-in' relates to include). However, it does not explain task_id, wait_ms, or wait_until, leaving a significant gap for a 6-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as an inspection utility for Reasonix tasks, listing specific outputs (status, evidence, interactions, diff/events) and scoping it as 'recovery-only'. This distinguishes it from the sibling tools (delegate, control) which handle execution and management.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states 'Recovery-only' and 'The default two-call happy path uses no inspect polling', providing clear context for when to use this tool (recovery scenarios) and implying it is not part of the normal flow. It doesn't name alternatives directly but the context is sufficient to differentiate from siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv0.2.0-rc.4
    • Changedreasonix_control32 fields changed
      • changedInput schema / properties / approved_review_criteria / description
        Previous value: -"Required when action is finalize; omit for other actions."New value: +"Required when action is finalize; omit for other actions. Any valid acceptance id is accepted; automated ids are ignored for approval, but every review-evidence criterion must be present."
      • addedInput schema / properties / expected_review_revision
        Added value: +{
        +  "description": "Required when action is finalize: copy review_revision from the reviewed task view. Omit for other actions.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / expected_review_tree_hash
        Added value: +{
        +  "description": "Required when action is finalize: copy review_tree_hash from the reviewed task view. Omit for other actions.",
        +  "pattern": "^[0-9a-f]{40}$",
        +  "type": "string"
        +}
      • changedInput schema / properties / message / minLength
        Previous value: -1New value: +0
      • addedInput schema / properties / wait_timeout_seconds
        Added value: +{
        +  "description": "Optional wait timeout for action finalize; omit for other actions.",
        +  "maximum": 600,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • changedOutput schema / additionalProperties
        Previous value: -trueNew value: +false
      • addedOutput schema / properties / branch
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / commit_hash
        Added value: +{
        +  "pattern": "^[0-9a-f]{40,64}$",
        +  "type": "string"
        +}
      • addedOutput schema / properties / contract_hash
        Added value: +{
        +  "pattern": "^[0-9a-f]{64}$",
        +  "type": "string"
        +}
      • addedOutput schema / properties / effective_reasoning_effort
        Added value: +{
        +  "enum": [
        +    "minimal",
        +    "low",
        +    "medium",
        +    "high",
        +    "max"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / execution_timeout_seconds
        Added value: +{
        +  "maximum": 14400,
        +  "minimum": 60,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / integration_command
        Added value: +{
        +  "maxLength": 1024,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / pause_reason_hash
        Added value: +{
        +  "pattern": "^[0-9a-f]{64}$",
        +  "type": "string"
        +}
      • addedOutput schema / properties / pause_revision
        Added value: +{
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / phase
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / reason
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / reasonix_session_mode
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / reasonix_work_mode
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / repair_rounds
        Added value: +{
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / repository_id
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / requested_reasoning_effort
        Added value: +{
        +  "enum": [
        +    "minimal",
        +    "low",
        +    "medium",
        +    "high",
        +    "max"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / review_revision
        Added value: +{
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / review_tree_hash
        Added value: +{
        +  "pattern": "^[0-9a-f]{40}$",
        +  "type": "string"
        +}
      • addedOutput schema / properties / session_id
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / source_checkout_integrated
        Added value: +{
        +  "const": false,
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / source_collision
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "baseCommit": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "checkpoint": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "committedPaths": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "detectedAt": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "dirtyPaths": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "overlappingPaths": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "sourceHead": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "unavailable": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "checkpoint",
        +    "baseCommit",
        +    "dirtyPaths",
        +    "committedPaths",
        +    "overlappingPaths",
        +    "unavailable",
        +    "detectedAt"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / state
        Added value: +{
        +  "enum": [
        +    "provisioning",
        +    "running",
        +    "waiting_permission",
        +    "waiting_input",
        +    "paused",
        +    "review_required",
        +    "verifying",
        +    "completed",
        +    "commit_failed",
        +    "failed",
        +    "cancelled",
        +    "closed"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / task_id
        Added value: +{
        +  "maxLength": 64,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / updated_at
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / worker_lane
        Added value: +{
        +  "enum": [
        +    "fast",
        +    "deep"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / worktree
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / required
        Added value: +[
        +  "task_id",
        +  "state",
        +  "phase",
        +  "contract_hash",
        +  "repository_id",
        +  "branch",
        +  "worktree",
        +  "worker_lane",
        +  "requested_reasoning_effort",
        +  "effective_reasoning_effort",
        +  "execution_timeout_seconds",
        +  "source_checkout_integrated",
        +  "repair_rounds",
        +  "updated_at"
        +]
    • Changedreasonix_delegate57 fields changed
      • addedInput schema / properties / contract / properties / allowed_commands
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "argv": {
        +        "items": {
        +          "maxLength": 4096,
        +          "type": "string"
        +        },
        +        "maxItems": 128,
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "cwd": {
        +        "maxLength": 1024,
        +        "type": "string"
        +      },
        +      "id": {
        +        "$ref": "#/properties/contract/properties/acceptance_criteria/items/properties/id"
        +      },
        +      "timeout_seconds": {
        +        "maximum": 1800,
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "argv"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 256,
        +  "type": "array"
        +}
      • addedInput schema / properties / contract / properties / file_assertions
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "expected_utf8": {
        +        "maxLength": 65536,
        +        "type": "string"
        +      },
        +      "id": {
        +        "$ref": "#/properties/contract/properties/acceptance_criteria/items/properties/id"
        +      },
        +      "path": {
        +        "maxLength": 1024,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "proves": {
        +        "items": {
        +          "$ref": "#/properties/contract/properties/acceptance_criteria/items/properties/id"
        +        },
        +        "maxItems": 256,
        +        "minItems": 1,
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "path",
        +      "expected_utf8",
        +      "proves"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 256,
        +  "type": "array"
        +}
      • addedInput schema / properties / contract / properties / forbidden_scope / default
        Added value: +[]
      • addedInput schema / properties / contract / properties / forbidden_scope / description
        Added value: +"Optional sensitive carve-outs inside broader write scopes; never use a catch-all pattern that matches a concrete write_scope target."
      • addedInput schema / properties / contract / properties / invariants / default
        Added value: +[]
      • addedInput schema / properties / contract / properties / non_goals / default
        Added value: +[]
      • addedInput schema / properties / contract / properties / pause_conditions / default
        Added value: +[]
      • addedInput schema / properties / contract / properties / verified_context / default
        Added value: +[]
      • addedInput schema / properties / contract / properties / write_scope / description
        Added value: +"Exclusive repository-relative write allowlist; every path not listed is already denied."
      • changedInput schema / properties / contract / required
        Previous value: -[
        -  "schema_version",
        -  "objective",
        -  "user_outcome",
        -  "verified_context",
        -  "write_scope",
        -  "forbidden_scope",
        -  "invariants",
        -  "non_goals",
        -  "acceptance_criteria",
        -  "verification",
        -  "pause_conditions"
        -]New value: +[
        +  "schema_version",
        +  "objective",
        +  "user_outcome",
        +  "write_scope",
        +  "acceptance_criteria",
        +  "verification"
        +]
      • addedInput schema / properties / execution_timeout_seconds
        Added value: +{
        +  "description": "Task execution deadline. New fast-lane tasks default to 600 seconds and deep-lane tasks to 3600 seconds; omitted resumes preserve the stored value. A wait timeout never cancels the worker.",
        +  "maximum": 14400,
        +  "minimum": 60,
        +  "type": "integer"
        +}
      • addedInput schema / properties / path_base
        Added value: +{
        +  "description": "Defaults to cwd for new tasks; omitted legacy resumes preserve stored semantics.",
        +  "enum": [
        +    "cwd",
        +    "repository"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / pause_reason_hash
        Added value: +{
        +  "pattern": "^[0-9a-f]{64}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / pause_revision
        Added value: +{
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / reasoning_effort
        Added value: +{
        +  "description": "Reasoning effort; low is the lowest supported value for new tasks.",
        +  "enum": [
        +    "low",
        +    "medium",
        +    "high",
        +    "max"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / wait_mode
        Added value: +{
        +  "default": "review",
        +  "enum": [
        +    "review",
        +    "background"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / wait_timeout_seconds
        Added value: +{
        +  "default": 600,
        +  "maximum": 600,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / worker_lane
        Added value: +{
        +  "description": "Worker execution lane. fast (default) is a direct-edit Reasonix session without Goal/AutoResearch/subagents; deep is an explicit long-horizon Goal session. Omitted resumes preserve the stored lane.",
        +  "enum": [
        +    "fast",
        +    "deep"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / additionalProperties
        Previous value: -trueNew value: +false
      • addedOutput schema / properties / active_interaction
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "createdAt": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "kind": {
        +      "enum": [
        +        "permission",
        +        "input"
        +      ],
        +      "type": "string"
        +    },
        +    "request": {
        +      "additionalProperties": {},
        +      "type": "object"
        +    },
        +    "resolvedAt": {
        +      "type": "string"
        +    },
        +    "response": {
        +      "additionalProperties": {},
        +      "type": "object"
        +    },
        +    "status": {
        +      "enum": [
        +        "pending",
        +        "resolved",
        +        "cancelled"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "kind",
        +    "status",
        +    "createdAt",
        +    "request"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / branch
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / changed_files
        Added value: +{
        +  "items": {
        +    "maxLength": 1024,
        +    "type": "string"
        +  },
        +  "maxItems": 256,
        +  "type": "array"
        +}
      • addedOutput schema / properties / commit_hash
        Added value: +{
        +  "pattern": "^[0-9a-f]{40,64}$",
        +  "type": "string"
        +}
      • addedOutput schema / properties / contract_hash
        Added value: +{
        +  "pattern": "^[0-9a-f]{64}$",
        +  "type": "string"
        +}
      • addedOutput schema / properties / diff
        Added value: +{
        +  "maxLength": 12288,
        +  "type": "string"
        +}
      • addedOutput schema / properties / diff_stat
        Added value: +{
        +  "maxLength": 4096,
        +  "type": "string"
        +}
      • addedOutput schema / properties / effective_reasoning_effort
        Added value: +{
        +  "enum": [
        +    "minimal",
        +    "low",
        +    "medium",
        +    "high",
        +    "max"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / execution_timeout_seconds
        Added value: +{
        +  "maximum": 14400,
        +  "minimum": 60,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / inspect_required
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / integration_command
        Added value: +{
        +  "maxLength": 1024,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / pause_reason_hash
        Added value: +{
        +  "pattern": "^[0-9a-f]{64}$",
        +  "type": "string"
        +}
      • addedOutput schema / properties / pause_revision
        Added value: +{
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / phase
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / reason
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / reasonix_session_mode
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / reasonix_work_mode
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / repair_rounds
        Added value: +{
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / repository_id
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / requested_reasoning_effort
        Added value: +{
        +  "enum": [
        +    "minimal",
        +    "low",
        +    "medium",
        +    "high",
        +    "max"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / required_review_criteria
        Added value: +{
        +  "items": {
        +    "maxLength": 64,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 1000,
        +  "type": "array"
        +}
      • addedOutput schema / properties / resume_required
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / review_diff_sha256
        Added value: +{
        +  "pattern": "^[0-9a-f]{64}$",
        +  "type": "string"
        +}
      • addedOutput schema / properties / review_revision
        Added value: +{
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / review_tree_hash
        Added value: +{
        +  "pattern": "^[0-9a-f]{40}$",
        +  "type": "string"
        +}
      • addedOutput schema / properties / risks
        Added value: +{
        +  "items": {
        +    "maxLength": 2048,
        +    "type": "string"
        +  },
        +  "maxItems": 128,
        +  "type": "array"
        +}
      • addedOutput schema / properties / session_id
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / source_checkout_integrated
        Added value: +{
        +  "const": false,
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / source_collision
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "baseCommit": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "checkpoint": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "committedPaths": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "detectedAt": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "dirtyPaths": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "overlappingPaths": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "sourceHead": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "unavailable": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "checkpoint",
        +    "baseCommit",
        +    "dirtyPaths",
        +    "committedPaths",
        +    "overlappingPaths",
        +    "unavailable",
        +    "detectedAt"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / state
        Added value: +{
        +  "enum": [
        +    "provisioning",
        +    "running",
        +    "waiting_permission",
        +    "waiting_input",
        +    "paused",
        +    "review_required",
        +    "verifying",
        +    "completed",
        +    "commit_failed",
        +    "failed",
        +    "cancelled",
        +    "closed"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / summary
        Added value: +{
        +  "maxLength": 4096,
        +  "type": "string"
        +}
      • addedOutput schema / properties / task_id
        Added value: +{
        +  "maxLength": 64,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / timed_out
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / updated_at
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / usage
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "cacheHitRatio": {
        +      "anyOf": [
        +        {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "cacheHitTokens": {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "cacheMissTokens": {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "completionTokens": {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "estimatedCost": {
        +      "anyOf": [
        +        {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "promptTokens": {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "reasoningTokens": {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "usageSource": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "promptTokens",
        +    "completionTokens",
        +    "reasoningTokens",
        +    "cacheHitTokens",
        +    "cacheMissTokens",
        +    "cacheHitRatio",
        +    "estimatedCost",
        +    "currency",
        +    "usageSource"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / worker_lane
        Added value: +{
        +  "enum": [
        +    "fast",
        +    "deep"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / worktree
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / required
        Added value: +[
        +  "task_id",
        +  "state",
        +  "phase",
        +  "contract_hash",
        +  "repository_id",
        +  "branch",
        +  "worktree",
        +  "worker_lane",
        +  "requested_reasoning_effort",
        +  "effective_reasoning_effort",
        +  "execution_timeout_seconds",
        +  "source_checkout_integrated",
        +  "repair_rounds",
        +  "updated_at"
        +]
    • Changedreasonix_inspect8 fields changed
      • addedInput schema / properties / wait_until
        Added value: +{
        +  "default": "change",
        +  "enum": [
        +    "change",
        +    "review_required",
        +    "interaction",
        +    "terminal"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / additionalProperties
        Previous value: -trueNew value: +false
      • addedOutput schema / properties / next_cursor
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / sections
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "acceptance_evidence": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "approved": {
        +                "type": "boolean"
        +              },
        +              "criterionId": {
        +                "type": "string"
        +              },
        +              "evidence": {
        +                "enum": [
        +                  "automated",
        +                  "review"
        +                ],
        +                "type": "string"
        +              },
        +              "outputBytes": {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              "sha256": {
        +                "type": "string"
        +              },
        +              "source": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "criterionId",
        +              "evidence",
        +              "approved",
        +              "source"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    "changed_files": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    "diff": {
        +      "type": "string"
        +    },
        +    "diff_stat": {
        +      "type": "string"
        +    },
        +    "events": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "data": {},
        +              "seq": {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              "timestamp": {
        +                "type": "string"
        +              },
        +              "type": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "seq",
        +              "timestamp",
        +              "type"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    "interactions": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "createdAt": {
        +                "type": "string"
        +              },
        +              "id": {
        +                "type": "string"
        +              },
        +              "kind": {
        +                "enum": [
        +                  "permission",
        +                  "input"
        +                ],
        +                "type": "string"
        +              },
        +              "request": {
        +                "additionalProperties": {},
        +                "type": "object"
        +              },
        +              "resolvedAt": {
        +                "type": "string"
        +              },
        +              "response": {
        +                "additionalProperties": {},
        +                "type": "object"
        +              },
        +              "status": {
        +                "enum": [
        +                  "pending",
        +                  "resolved",
        +                  "cancelled"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "id",
        +              "kind",
        +              "status",
        +              "createdAt",
        +              "request"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    "risks": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    "status": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "branch": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "commit_hash": {
        +              "pattern": "^[0-9a-f]{40,64}$",
        +              "type": "string"
        +            },
        +            "contract_hash": {
        +              "pattern": "^[0-9a-f]{64}$",
        +              "type": "string"
        +            },
        +            "effective_reasoning_effort": {
        +              "enum": [
        +                "minimal",
        +                "low",
        +                "medium",
        +                "high",
        +                "max"
        +              ],
        +              "type": "string"
        +            },
        +            "execution_timeout_seconds": {
        +              "maximum": 14400,
        +              "minimum": 60,
        +              "type": "integer"
        +            },
        +            "integration_command": {
        +              "maxLength": 1024,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "pause_reason_hash": {
        +              "pattern": "^[0-9a-f]{64}$",
        +              "type": "string"
        +            },
        +            "pause_revision": {
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "phase": {
        +              "type": "string"
        +            },
        +            "reason": {
        +              "type": "string"
        +            },
        +            "reasonix_session_mode": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "reasonix_work_mode": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "repair_rounds": {
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "repository_id": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "requested_reasoning_effort": {
        +              "enum": [
        +                "minimal",
        +                "low",
        +                "medium",
        +                "high",
        +                "max"
        +              ],
        +              "type": "string"
        +            },
        +            "review_revision": {
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "review_tree_hash": {
        +              "pattern": "^[0-9a-f]{40}$",
        +              "type": "string"
        +            },
        +            "session_id": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "source_checkout_integrated": {
        +              "const": false,
        +              "type": "boolean"
        +            },
        +            "source_collision": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "baseCommit": {
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "checkpoint": {
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "committedPaths": {
        +                  "items": {
        +                    "type": "string"
        +                  },
        +                  "type": "array"
        +                },
        +                "detectedAt": {
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "dirtyPaths": {
        +                  "items": {
        +                    "type": "string"
        +                  },
        +                  "type": "array"
        +                },
        +                "overlappingPaths": {
        +                  "items": {
        +                    "type": "string"
        +                  },
        +                  "type": "array"
        +                },
        +                "sourceHead": {
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "unavailable": {
        +                  "type": "boolean"
        +                }
        +              },
        +              "required": [
        +                "checkpoint",
        +                "baseCommit",
        +                "dirtyPaths",
        +                "committedPaths",
        +                "overlappingPaths",
        +                "unavailable",
        +                "detectedAt"
        +              ],
        +              "type": "object"
        +            },
        +            "state": {
        +              "enum": [
        +                "provisioning",
        +                "running",
        +                "waiting_permission",
        +                "waiting_input",
        +                "paused",
        +                "review_required",
        +                "verifying",
        +                "completed",
        +                "commit_failed",
        +                "failed",
        +                "cancelled",
        +                "closed"
        +              ],
        +              "type": "string"
        +            },
        +            "task_id": {
        +              "$ref": "#/properties/task_id"
        +            },
        +            "updated_at": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "worker_lane": {
        +              "enum": [
        +                "fast",
        +                "deep"
        +              ],
        +              "type": "string"
        +            },
        +            "worktree": {
        +              "minLength": 1,
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "task_id",
        +            "state",
        +            "phase",
        +            "contract_hash",
        +            "repository_id",
        +            "branch",
        +            "worktree",
        +            "worker_lane",
        +            "requested_reasoning_effort",
        +            "effective_reasoning_effort",
        +            "execution_timeout_seconds",
        +            "source_checkout_integrated",
        +            "repair_rounds",
        +            "updated_at"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    "summary": {
        +      "type": "string"
        +    },
        +    "usage": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "cacheHitRatio": {
        +              "anyOf": [
        +                {
        +                  "maximum": 1,
        +                  "minimum": 0,
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "cacheHitTokens": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "cacheMissTokens": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "completionTokens": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "currency": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "estimatedCost": {
        +              "anyOf": [
        +                {
        +                  "minimum": 0,
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "promptTokens": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "reasoningTokens": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "usageSource": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "promptTokens",
        +            "completionTokens",
        +            "reasoningTokens",
        +            "cacheHitTokens",
        +            "cacheMissTokens",
        +            "cacheHitRatio",
        +            "estimatedCost",
        +            "currency",
        +            "usageSource"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    "verification": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "argv": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "cwd": {
        +                "type": "string"
        +              },
        +              "exitCode": {
        +                "anyOf": [
        +                  {
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ]
        +              },
        +              "finishedAt": {
        +                "type": "string"
        +              },
        +              "id": {
        +                "type": "string"
        +              },
        +              "logPath": {
        +                "type": "string"
        +              },
        +              "outputBytes": {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              "passed": {
        +                "type": "boolean"
        +              },
        +              "proves": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "sha256": {
        +                "type": "string"
        +              },
        +              "startedAt": {
        +                "type": "string"
        +              },
        +              "timedOut": {
        +                "type": "boolean"
        +              }
        +            },
        +            "required": [
        +              "id",
        +              "argv",
        +              "cwd",
        +              "startedAt",
        +              "finishedAt",
        +              "exitCode",
        +              "timedOut",
        +              "passed",
        +              "proves",
        +              "logPath",
        +              "sha256",
        +              "outputBytes"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / task_id
        Added value: +{
        +  "maxLength": 64,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / truncated
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / updated_at
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / required
        Added value: +[
        +  "task_id",
        +  "sections",
        +  "truncated",
        +  "updated_at"
        +]
  2. 2 tool updatesv0.1.1
    • Changedreasonix_control13 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / action
        Added value: +{
        +  "enum": [
        +    "steer",
        +    "respond",
        +    "cancel",
        +    "finalize",
        +    "close"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / answer
        Added value: +{
        +  "description": "Optional free-form answer for action respond; omit for other actions.",
        +  "maxLength": 10000,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / approved_review_criteria
        Added value: +{
        +  "description": "Required when action is finalize; omit for other actions.",
        +  "items": {
        +    "maxLength": 64,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 1000,
        +  "type": "array"
        +}
      • addedInput schema / properties / commit_message
        Added value: +{
        +  "description": "Optional commit message for action finalize; omit for other actions.",
        +  "maxLength": 5000,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / decision
        Added value: +{
        +  "description": "Required when action is respond; omit for other actions.",
        +  "enum": [
        +    "allow",
        +    "deny"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / interaction_id
        Added value: +{
        +  "description": "Required when action is respond; omit for other actions.",
        +  "maxLength": 256,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / message
        Added value: +{
        +  "description": "Required when action is steer; omit for other actions.",
        +  "maxLength": 20000,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / option_id
        Added value: +{
        +  "description": "Optional offered option for action respond; omit for other actions.",
        +  "maxLength": 1024,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / review_summary
        Added value: +{
        +  "description": "Required when action is finalize; omit for other actions.",
        +  "maxLength": 20000,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / task_id
        Added value: +{
        +  "maxLength": 64,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "task_id",
        +  "action"
        +]
    • Changedreasonix_delegate3 fields changed
      • removedInput schema / properties / contract / properties / verification / items / properties / argv / additionalItems
        Removed value: -{
        -  "maxLength": 4096,
        -  "type": "string"
        -}
      • changedInput schema / properties / contract / properties / verification / items / properties / argv / items
        Previous value: -[
        -  {
        -    "maxLength": 4096,
        -    "minLength": 1,
        -    "type": "string"
        -  }
        -]New value: +{
        +  "maxLength": 4096,
        +  "type": "string"
        +}
      • addedInput schema / properties / contract / properties / verification / items / properties / argv / maxItems
        Added value: +128
  3. 3 tool updatesv0.1.0-rc.1
    • First observedreasonix_control
    • First observedreasonix_delegate
    • First observedreasonix_inspect

TDQS

A4.6/5.0
Disambiguation5/5

Each tool targets a distinct phase of the task lifecycle: inspect for observation, delegate for creation, and control for lifecycle actions. There is no meaningful overlap; even control's recovery actions are clearly separate from inspection.

Naming Consistency5/5

All tool names follow the exact same pattern of 'reasonix_' plus an imperative verb (inspect, delegate, control). This is perfectly consistent and predictable.

Tool Count5/5

With three tools, the surface is minimal but complete for its stated purpose. Each tool is necessary and none are redundant; the narrow domain of delegating and managing isolated worker tasks does not require more tools.

Completeness5/5

The lifecycle is fully covered: creation via delegate, inspection via inspect, and all terminal/control actions (finalize, cancel, close, steer, respond) via control. Since tasks are immutable, there is no need for an update tool, and the set covers every operation needed for the domain.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rixzkiye/codex-reasonix-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server