approval maximization: agent behaviors that earn user approvals
distilled from 4,656 threads, 208,799 messages. focus: what AGENT BEHAVIORS (not user behaviors) correlate with approval.
the core insight
approvals cluster around state transitions. users approve when agents signal completion of a phase and request permission to proceed. the pattern:
agent: [completes work] → [explicit completion signal] → [asks about next phase]
user: "do it" / "ship it" / "commit"
NOT:
agent: [takes action without signaling] → [continues autonomously]
user: [steering or silence]
tier 1: highest-impact agent behaviors
1. CONFIRMATION BEFORE ACTION
47% of all steering messages are “no…” — flat rejections of agent actions. 17% are “wait…” — premature action.
maximize approvals by:
- asking “ready to run tests?” not “running tests now…”
- confirming before: tests, commits, scope expansion, multi-file edits
- treating user silence as “wait” not “proceed”
approval vocabulary this unlocks: “do it”, “yes”, “proceed”, “go ahead”
2. EXPLICIT COMPLETION SIGNALS
users can’t approve what they don’t know is done. most common approval triggers:
- “done. [1-2 line summary]”
- “all tests pass. ready to commit?”
- “changes complete: [bullet list]”
approval vocabulary this unlocks: “ship it”, “commit”, “push”, “good”
3. PHASE TRANSITION AWARENESS
approvals happen at boundaries:
- planning → implementation
- implementation → testing
- testing → shipping
- debugging → fixing
maximize approvals by:
- explicitly announcing phase completion
- requesting permission for phase transition
- presenting a clear “decision point” not “status update”
4. REMEMBERING USER FLAGS
concise_commander steering example: “DON’T ADD THE -race FLAG PLEASE” — agent added flag, user corrected.
maximize approvals by:
- preserving
-run=xxx,-bench=xxxacross thread - using explicit file lists not
git add -A - tracking user-specified conventions
approval vocabulary this unlocks: approval by absence of steering
tier 2: high-impact agent behaviors
5. TERSE COMPLETION SUMMARIES
medium assistant responses (500-1000 chars) get best approval rates. verbose explanations trigger redirect.
pattern:
# bad (triggers steering)
"I've made the following changes to the codebase. First, I modified file X
to handle case Y. This was necessary because Z. Additionally, I updated..."
[800 words]
# good (triggers approval)
"done. fixed the race condition by adding mutex in handler.go:45.
tests pass. ready to commit?"
6. READ BEFORE RESPOND
when user provides file paths (@path/to/file), reading them BEFORE responding:
- correlates with +25pp success rate
- signals respect for user context
- prevents “you didn’t look at what I sent you” steering
7. SPAWN 2-6 TASKS FOR PARALLEL WORK
78.6% success at 4-6 spawned tasks. over-delegation (11+) drops to 58%.
approval pattern: spawn returns → agent summarizes → user approves next phase
8. VERIFICATION BEFORE CLAIMING DONE
threads with verification (running tests, checking build) succeed 78% vs 61% without.
approval vocabulary this unlocks: “ship it” — confidence that work is validated
tier 3: moderate-impact behaviors
9. ACKNOWLEDGE STEERING, THEN DIVERGE
87% of steerings don’t cascade. the pattern:
user: "no, don't do X"
agent: "understood. doing Y instead." ← explicit acknowledgment
[proceeds with Y]
user: "good" ← approval
if 2+ consecutive steerings happen, agent should PAUSE and ask about approach change.
10. ORACLE AT PLANNING, NOT RESCUE
46% of FRUSTRATED threads reached for oracle vs 25% of resolved. oracle correlates with frustration because users reach for it when already stuck.
maximize approvals by:
- using oracle early for architecture/planning
- NOT using oracle as emergency rescue after 100+ turns
11. SOCRATIC PACING FOR MARATHON THREADS
concise_commander pattern: “OK, what’s next?” — user controls pace.
maximize approvals by:
- presenting decision points, not fait accompli
- letting user steer through questions
- offering options, not conclusions
anti-patterns (approval killers)
| behavior | effect | approval rate impact |
|---|---|---|
| acting without confirmation | triggers “no…” / “wait…” | -47% of steerings are rejections |
| verbose explanations | triggers redirect | -approval rate drops for >1000 char responses |
| ignoring user file refs | triggers “read what I sent” | -25pp success rate |
| weakening tests when stuck | triggers frustration spiral | escalates to profanity |
| asking permission for obvious actions | triggers “just do it” (annoyed) | technically approval, but negative sentiment |
| open-ended questions back | triggers QUESTION not APPROVAL | no approval e@swift_solverd |
approval vocabulary reference
| phrase | meaning | agent action that e@swift_solverd it |
|---|---|---|
| ”ship it” | commit and push | completion + verification |
| ”do it” | execute proposed plan | confirmation before action |
| ”commit” | save to git | explicit completion signal |
| ”go on” / “continue” | proceed to next step | partial progress shown |
| ”ok [instruction]“ | approval + redirect | phase transition point |
| ”good” / “great” | satisfied with work | clean execution |
| ”yes” / “yeah” | affirmative response | permission request |
approval:steering ratio as health metric
| ratio | meaning | agent response |
|---|---|---|
| >4:1 | COMMITTED territory | maintain current approach |
| 2-4:1 | RESOLVED territory | healthy, continue |
| 1-2:1 | caution zone | increase confirmation frequency |
| <1:1 | doom spiral | STOP, ask about approach change |
the approval maximization formula
approval_probability =
+ (explicit_completion_signal × 3)
+ (confirmation_before_action × 2)
+ (phase_transition_awareness × 2)
+ (file_refs_read_first × 2)
+ (terse_summary × 1)
+ (verification_run × 1)
- (autonomous_action × 2)
- (verbose_explanation × 1)
- (ignoring_user_context × 2)
- (consecutive_steering_ignored × 3)
implementation: what agents should do
- before every action: ask “does user expect this?” — if unsure, confirm
- after every completion: explicit signal + ask about next phase
- on user file refs: Read them FIRST before responding
- on steering: acknowledge explicitly, do NOT repeat behavior
- on 2+ steerings: STOP, meta-ask about approach
- on phase transitions: present decision point, wait for approval
- on flags/conventions: remember and preserve across thread
don_tickleski | synthesized from thread analysis corpus | 2026-01-09