Skip to content

Enforce reviewed-safe redirect boundaries - #1926

Merged
Aaronontheweb merged 5 commits into
devfrom
test/shell-policy-adversarial-contracts
Aug 13, 2026
Merged

Enforce reviewed-safe redirect boundaries#1926
Aaronontheweb merged 5 commits into
devfrom
test/shell-policy-adversarial-contracts

Conversation

@Aaronontheweb

Copy link
Copy Markdown
Collaborator

Summary

  • reject file-writing redirects from reviewed-safe phrase coverage
  • retain descriptor duplicate, close, and move behavior
  • add twelve sanitized adversarial policy fixtures
  • prove exact one-time, session, persistent, and safe-root authority
  • prove multi-candidate approval writes remain atomic

This PR is stacked on #1925.

Why

The adversarial corpus found a general policy defect. A reviewed command such as head README.md > report.txt could receive safe coverage despite its file-writing redirect.

The fix uses the parser-owned redirect mode. It adds no executable-specific parser.

Validation

  • full Netclaw.Security suite: 911 passed
  • full Netclaw.Actors suite: 3,265 passed, 1 expected Windows-only skip
  • combined actor, matrix, and evidence tests: 311 passed
  • security evidence tests: 13 passed
  • strict OpenSpec validation passed
  • header verification passed
  • changed-file format passed
  • changed-file Slopwatch passed
  • independent adversarial review passed at e792c80a

@Aaronontheweb
Aaronontheweb force-pushed the test/shell-policy-adversarial-contracts branch 3 times, most recently from 5ac5e47 to c66d71c Compare August 13, 2026 21:07
@Aaronontheweb Aaronontheweb added the shell Issues related to the shell tool, since it has the largest security perimeter. label Aug 13, 2026
Base automatically changed from feature/bash-causal-approval-intent to dev August 13, 2026 21:31
@Aaronontheweb
Aaronontheweb force-pushed the test/shell-policy-adversarial-contracts branch from c66d71c to 74ea6e4 Compare August 13, 2026 21:36
@Aaronontheweb
Aaronontheweb merged commit 673c4a8 into dev Aug 13, 2026
32 of 33 checks passed
@Aaronontheweb
Aaronontheweb deleted the test/shell-policy-adversarial-contracts branch August 13, 2026 22:11
Aaronontheweb added a commit that referenced this pull request Aug 20, 2026
* Sync delta specs for the last two completed changes

Apply the redirect-shared-temp-to-session-scratch delta to session-cwd and
tool-approval-gates. The OpenSpec CLI applied both files.

Merge the surface-reminder-schedule-failures delta into netclaw-scheduling by
hand. PR #2024 already corrected that requirement against the merged code, so a
programmatic apply would undo those corrections. Keep the corrected text and add
the scheduling-failure content:

- An execution failure and a scheduling failure share one ConsecutiveFailures
  count.
- A successful reschedule alone does not reset the count.
- An unattended reschedule site emits ReminderScheduleFailed at Warning severity,
  and ReminderAutoDisabled at Critical severity on the threshold.
- The set_reminder create path and update path return the error to the caller
  and emit no alert.

Drop three stale delta claims. The merged code disables a reminder. It does not
set a "paused" status and it does not write tasks.json. ReminderExecutionActor
has no ExecutionTimeoutSeconds constant, so the one-hour absolute limit stands.

* Archive the last two completed OpenSpec changes

Move each change to openspec/changes/archive/2026-08-19-<name>/. The code of
both changes is merged on dev.

- surface-reminder-schedule-failures: PR #1886.
- redirect-shared-temp-to-session-scratch: PRs #1890, #1925, #1926, #1945, and
  #1956.

Tick task 4.3 of redirect-shared-temp-to-session-scratch. The full pr_validation
suite ran green on Windows against current dev.

Leave the other boxes unticked. The maintainer accepts tasks 4.5 and 4.6 of
surface-reminder-schedule-failures as guaranteed by construction. The maintainer
accepts task 6.4 of that change and task 4.4 of
redirect-shared-temp-to-session-scratch as an eval-credentials gap.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

shell Issues related to the shell tool, since it has the largest security perimeter.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant