Skip to content

Excuses (6) handing the user a command needs an attempt first - #556

Open
EdbertChan wants to merge 1 commit into
mainfrom
stack/EdbertChan/reflect/handback-needs-attempt-20260913/handback-needs-attempt-flag-handing-user-step--8fd1c26c
Open

Excuses (6) handing the user a command needs an attempt first#556
EdbertChan wants to merge 1 commit into
mainfrom
stack/EdbertChan/reflect/handback-needs-attempt-20260913/handback-needs-attempt-flag-handing-user-step--8fd1c26c

Conversation

@EdbertChan

@EdbertChan EdbertChan commented Sep 13, 2026

Copy link
Copy Markdown
Owner

Summary

Small checker scripts read each reply Claude writes. This adds one that notices when Claude asks the person to run something Claude never tried.

The problem: agents hand work back too early. One wrote "please run" a setup step without trying it, and the person answered "why don't you just run it for me".

The cause: the rule against this lived only in written guidance. Nothing read replies for it, so it kept happening.

The fix: a new checker asks a small model whether the reply hands work back with no earlier attempt. The answer arrives on the next turn.

Review Claim

A reply that asks the person to do a step the agent never attempted is flagged on the next turn, unless a refusal came first or only a human can do the step.

Review Lane

policy

Review Unit

engine-runtime

Safety Invariant

A hand-back that follows a permission denial, a sandbox or classifier refusal, or a step only a human can do (password, OAuth consent, hardware) is never flagged. If the judge cannot answer, the next turn says it could not judge; it never reports clean.

Slice Rationale

One new hook with its phrase dictionary, tests, and install wiring. The one-line pointer from the cat-mode hand-back rule to this hook is a separate corpus-lesson PR, because it is a different review unit.

Non-goals

Test Plan

Test Plan

Built by Invoker workflow wf-1789281140471-18. Its only failing check, python3 scripts/check_install_effective.py, reads this machine's installed hooks rather than the branch, and fails on a clean origin/main checkout too (exit 1, 116 "bypasses the metrics runner" lines, 0 mentioning this hook).

Run on this branch:

  • python3 -m unittest discover -s engine/hooks/handback-needs-attempt/tests → OK
  • python3 scripts/check_hook_test_coverage.py → OK (38 hooks)
  • python3 scripts/check_no_silent_hook_except.py → checked 205 files
  • python3 scripts/check_rules_are_wired.py → OK (9 checkers)
  • python3 scripts/check_no_new_comments.py --base origin/main → ok
  • python3 engine/skills/make-pr/scripts/preflight.py --base origin/main --body-file <this body> → see below
unit    engine-runtime: 9 file(s)
neutral 1 file(s): docs/ecosystem.md
declare Review Unit: engine-runtime
gate    python3 scripts/check_hook_test_coverage.py engine/hooks/handback-needs-attempt
        check_hook_test_coverage: OK (1 hook(s) checked)
gate    python3 scripts/check_hook_test_coverage.py engine/hooks/llm-judge
        check_hook_test_coverage: OK (1 hook(s) checked)
gate    description_check /private/tmp/claude-501/-Users-edbertchan-Documents-GitHub-catstack/9b25a21a-0b29-4a9a-bcff-548fc74d2eef/scratchpad/pr-handback.md
        description clean
ok      preflight passed

Revert Plan

Revert Plan
  • Safe to revert? Yes
  • Revert command: git revert <merge sha>
  • Post-revert steps: rerun ./install.sh so the hook link and settings entry are removed
  • Data migration? No

🤖 Generated with Claude Code

https://claude.ai/code/session_016VgzyERsebhUHizFhFqP2t

…tried

A background-judged Stop hook. When a reply asks the user to run a command
or do a step themselves, it checks the turn for an earlier attempt, and
stays silent after a permission denial, a sandbox or classifier refusal, or
a human-only step (password, OAuth consent, hardware). A judge result that
could not be produced is reported as unchecked, never as clean.

Built by Invoker workflow wf-1789281140471-18; its only failing check
(check_install_effective.py) reads this machine's install and fails on clean
origin/main as well. The cat-mode prose pointer is left for a follow-up PR
so this one stays a single engine-runtime review unit.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VgzyERsebhUHizFhFqP2t
Change-Id: I8fd1c26cf5fa020719f7f9452aa68acdacf2d259
@EdbertChan EdbertChan changed the title handback-needs-attempt: flag handing the user a step the agent never tried Excuses (6) handing the user a command needs an attempt first Sep 13, 2026
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