Skip to content

docs(harness-ops): record the lane-permissions probes on Claude Code 2.1.312 - #10632

Merged
kyle-sexton merged 4 commits into
mainfrom
host-run/8737-lane-permissions-record
Oct 28, 2026
Merged

kyle-sexton merged 4 commits into
mainfrom
host-run/8737-lane-permissions-record

Conversation

@kyle-sexton

@kyle-sexton kyle-sexton commented Oct 28, 2026 •

Copy link
Copy Markdown
Member

Closes #8737

Summary

The seven lane-permissions behavior-probes cases had never run live, so nothing recorded whether the write lane's Read deny rules still keep Grep, Glob and Read out of /proc/*/environ and the checkout's .git on a current Claude Code. This PR records their first live run.

Fix

  • records.md adds record 17 and its basis: all seven cases pass on Claude Code 2.1.312 under dontAsk with the lane's --allowedTools and --disallowedTools.
  • A bump: none changelog fragment for harness-ops. No script or case changes.

Verification

  • probe.py validate: 41 cases, 0 problems.
  • probe.py run --dry-run --area lane-permissions: 7 pass, exit 0.
  • probe.py run --live --area lane-permissions --retries 1 on Claude Code 2.1.312: 7 pass on the first attempt, exit 0. raw/ stayed empty and every result row's tool text was blank, so no raw tool output was written.
  • Left out: markdownlint run locally (the pinned CLI is not installed on this host); CI lints it.

Related

🤖 Generated with Claude Code

@kyle-sexton
kyle-sexton marked this pull request as ready for review October 28, 2026 08:50
@chatgpt-codex-connector

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

Copy link
Copy Markdown

Codex Review Summary

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

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-28T08:51:54.851526Z 53d991a Draft marked ready
ℹ️ About Codex in GitHub

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

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

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

@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

claude-security-review reviewed 230d65b7c80e15493b86da99a3d4a4b2436a6ee0: 0 finding(s), 0 as inline comments.

No security issues found in this pull request, so there are no findings and no hold.

  • Skip gate: The change is docs only, with no security-relevant surface. It adds a bump: none changelog fragment (.changes/harness-ops/record-lane-permissions-probes-8737a1c2.md) and a new record 17 in plugins/harness-ops/skills/behavior-probes/records.md. Neither file matches a trusted path. It changes no script, workflow, manifest, permission rule, token scope, kill switch, or merge hold.
  • Instruction surface: The diff only adds text. It deletes, narrows, or softens no standing instruction. Record 17 documents a result: the write lane's Read(//proc/**) and .git deny rules held on Claude Code 2.1.312. It does not change those rules.
  • Data exposure: The record says no stream was saved, raw/ stayed empty, and the tool text was blank. The added lines contain no secrets, environment content, or git-config content.
  • PR context: I found no embedded instruction aimed at the review lane. The "Target labels: add none; remove host-run" line in the issue comment is ordinary issue text, and I did not act on it.
  • Non-security note, not counted: The record's number is inconsistent. The diff adds it as record 17, the PR description says record 16, and the issue comment says record 14.

Spend: the live probe run used the author's subscription login, with no API key in the environment. This PR adds no spend.

critical-findings: 0

@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

claude-review reviewed 230d65b7c80e15493b86da99a3d4a4b2436a6ee0: 0 finding(s), 0 as inline comments.

Code review: no findings

The PR adds record 17 and its "Basis for record 17" section to plugins/harness-ops/skills/behavior-probes/records.md. It also adds a bump: none changelog fragment for harness-ops. I read the whole diff and the PR context, and checked the record against the repository.

  • Closing issue feat(harness-ops): probe the write lanes' Grep, Glob and Read denials per Claude Code version #8737: Its code criteria cover build_argv, verdict-only mode, rejudge, the seven cases, validate/dry-run and SKILL.md. They belong to feat(harness-ops): probe the write lane's Grep, Glob and Read denials #10331 and are not part of this diff. This PR covers the issue's host-run item, a live run of the seven cases that reports pass/fail with the Claude Code version and writes no raw output. The record reports 7 of 7 passing on 2.1.312 with no stream saved. I could not check those results myself because the live run was not part of this review.
  • Record vs cases: cases/lane-permissions/ holds the cases the record names, with verdict_only: true, permission_mode: dontAsk and tool_rules: lane-write-tools.json. For the two I read, the expectations match the record's table: grep-proc-environ-denied expects deny with a rule reason, and read-git-config-denied expects deny with no reason type, which fits the "seen only in result.permission_denials, so unknown" note.
  • Format and consistency: The new record follows the existing "Basis for record N" then ## N. layout. It has the claim, recheck trigger, outcome table and as-of date, and it refers back to the shared recheck trigger and expiry. The numbering follows record 16. The bump: none fragment fits a docs-only change.
  • Not counted as findings:
  • Cost: No spend comes from this change. It is documentation only, and the live run it records already happened.

@melodic-automation-lanes melodic-automation-lanes Bot added the needs-human Human-in-the-loop required; autonomous sessions must not resolve items carrying this. label Oct 28, 2026
@melodic-automation-lanes

Copy link
Copy Markdown
Contributor

The pr-unblock lane stopped on this pull request and needs a person: the lane could not resolve every conflict.

  • Reason: unresolved-conflict
  • Resume key: 53d991ad9dadec0e85948112468590df3ce07781 (the head the lane stopped on)

To resume, deal with the reason above, remove the needs-human label (and do-not-merge, if set), then dispatch the pr-unblock workflow with pr-number=10632 and activity=resolve-conflicts:

gh workflow run pr-unblock.yml -R melodic-software/claude-code-plugins -f pr-number=10632 -f activity=resolve-conflicts

@kyle-sexton
kyle-sexton enabled auto-merge October 28, 2026 14:24
Resolve behavior-probes records.md: main added records 14 and 15
(Skill-tool and preloaded CLAUDE_EFFORT); this branch's lane-permissions
record, also numbered 14, becomes record 16, and the changelog fragment
follows.

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

Copy link
Copy Markdown
Contributor

The pr-unblock lane escalated this pull request as unresolved-conflict, and that no longer holds at 5c3bd39672b64bdd87f05c244f0d4c848af669fb: GitHub reports no conflict with main. pr-merge removed needs-human, so the lanes run on it again. To keep a person on it, add needs-human back: a label a person adds is never removed.

@melodic-automation-lanes melodic-automation-lanes Bot removed the needs-human Human-in-the-loop required; autonomous sessions must not resolve items carrying this. label Oct 28, 2026
@kyle-sexton
kyle-sexton added this pull request to the merge queue Oct 28, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a conflict with the base branch Oct 28, 2026
@melodic-automation-lanes

melodic-automation-lanes Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

The pr-unblock lane stopped resolve-conflicts on this pull request: the lane could not resolve every conflict. The lane sets no label: the run ends in a failing pr-unblock/conflict status on the head the lane gated.

When a retry on this head can change the outcome, the lane runs one on its own, up to its per-head cap, and edits this comment if it stops again; a run that does not stop clears the status. When no retry can (a review thread the lane does not take or settle, or a failing check after the retries are spent), a person resolves the threads or gets the checks green, then dispatches the workflow below: that run finds the cause gone and clears the status. On a pull request the lanes App opened, the dispatchers start that run once per stop; on any other, a person does. A new commit to the branch starts clean.

To run it again on this head now, dispatch the pr-unblock workflow:

gh workflow run pr-unblock.yml -R melodic-software/claude-code-plugins -f pr-number=10632 -f activity=resolve-conflicts

Resolve behavior-probes records.md again: #10628 landed the autocompact
record as 16, so this branch's lane-permissions record becomes 17, and
the changelog fragment follows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kyle-sexton
kyle-sexton added this pull request to the merge queue Oct 28, 2026
Merged via the queue into main with commit 9f89f97 Oct 28, 2026
58 checks passed
@kyle-sexton
kyle-sexton deleted the host-run/8737-lane-permissions-record branch October 28, 2026 17:22
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.

feat(harness-ops): probe the write lanes' Grep, Glob and Read denials per Claude Code version

1 participant