Skip to content

Enforce deny-all tool scope for ACP teachers - #756

Merged
igorcosta merged 2 commits into
mainfrom
cto/f0457-acp-teacher-scope
Nov 12, 2026
Merged

igorcosta merged 2 commits into
mainfrom
cto/f0457-acp-teacher-scope

Conversation

@igorcosta

@igorcosta igorcosta commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

Noda sends structured teaching prompts to ACP with tools refused. Dataset text mentioning tests or a team can still trigger automatic CLI specialist preparation, and the existing bare * run-tool denial matches a literal tool name rather than all tools.

Apply bare wildcard denials to tool advertising and concrete calls, and prevent automatic specialist preparation from bypassing the run scope. The ACP handshake reports whether this process actually activated deny-all enforcement, so Noda can reject incompatible or unconstrained helpers before creating a session.

Validation on fixed head 4a0cfd72b37104eaa2a361c5d3aa835c01d227b0:

  • Full pinned-Bun1.4.2 proof:unit passes lint, typecheck and all13,975 active tests/975 files (80 tests and6 files skipped), 492.15 seconds. Earlier reported local failures do not reproduce in this run; their root cause is not claimed established.
  • Focused ACP/permission/actionExecutor checks pass368 tests, including the reported auto_commit interactive case. Build passes, and both built scoped-tool terminal scenarios pass in11.19 seconds.
  • Exact-head GitHub CI passes all three unit shards, all four terminal shards, Windows terminal checks and macOS/Linux/Windows builds. No new uninterrupted local full-terminal proof run is claimed; the separate opt-in proof job is skipped.
  • Primary Standards/Spec source review found no confirmed blocker. Runtime run-scope options are forwarded into the agent; deny-all applies to advertising, concrete calls and automatic specialist preparation.
  • Existing bounded Bun-runtime protocol replay preserved the selected fixture model, exactly one provider request, zero tools/specialists and unchanged fixture configuration. The Noda caller rejects installed CLI0.9.10 and an unconstrained candidate before session creation. A completed Node-runtime teacher replay remains unverified; the earlier25-second attempt is not relabelled a pass.

Counterpart: https://github.com/autohandai/noda-app/pull/2

Release hold: this requires an approved CLI release, followed by updating the Noda helper pin/checksum and rebuilding Noda. No version bump, tag, merge, installation, deployment or release was performed. Provider authentication remains a separate user connection; no personal credentials were read or changed during verification. The separate 12 Nov generic session/new failure is not claimed resolved. F-0457.

igorcosta and others added 2 commits November 12, 2026 15:40
Honor wildcard denials for advertised and fabricated tools, and prevent automatic specialists from bypassing the run scope. Advertise the ACP scope capability so Noda can reject unsafe older helpers for F-0457.

Co-authored-by: Autohand Evolve <code-noreply@autohand.ai>
Let clients require actual process-level enforcement before creating a teaching session, rather than accepting capability support alone.

Co-authored-by: Autohand Evolve <code-noreply@autohand.ai>
@igorcosta
igorcosta marked this pull request as ready for review November 12, 2026 10:32
@igorcosta
igorcosta merged commit ac5e7c8 into main Nov 12, 2026
13 checks passed
igorcosta added a commit that referenced this pull request Nov 12, 2026
Prepare Autohand Code 0.9.11 with the accumulated CLI reliability fixes and reviewed ACP deny-all enforcement.

- Preserve terminal drafts and session readiness, recover healthy history, and avoid replay after capacity failures.
- Return bounded delegated work as explicit partial results, retain configured model/reasoning choices, and preserve Code Mode images and permission boundaries.
- Repair ACP follow-up elicitation, completion capture-budget handling, patch authorization, provider compatibility/deadlines, encoded paths, and packed Git runtime identities.
- Include the reviewed #756 scope guard alongside the existing Keenable and OpenAI retry integrations.
- Update package, legacy formula, changelog and curated release notes to 0.9.11; retain production archive checksum generation in the release pipeline.

Validation: `bun run proof` passed on the exact candidate: 14,284 unit tests and 577 terminal tests. Lint, typecheck and build passed. Existing/platform skips: 81 unit and 3 terminal. Bun 1.4.2, Node 24, two isolated terminal workers. The 151 frozen input hashes and all published Git blob hashes were verified.

The original recovered WIP snapshot and unrelated feature branches remain preserved. Historical Cloud safety verdicts and reports lacking incident/configuration evidence are not represented as resolved.

Fixes #755.
Fixes #754.
Fixes #706.
Fixes #700.

Co-authored-by: Autohand Evolve <code-noreply@autohand.ai>
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