Skip to content

kadenn/pushback

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pushback

your agent should disagree with you sometimes


Default AI agents are sycophants. They follow your lead, fill in gaps with assumptions, and ship the thing you asked for even when the thing you asked for is wrong. In vibe-coding and AI-first development, planning quality is the ceiling on output quality — and you can't out-plan a yes-man.

pushback is a skill + hook pair that gives the agent permission (and a structured prompt) to disagree with you. It catches gaps, contradictions, and repeating-mistake loops during the planning stage, before code is written. Configurable intensity from "gentle suggestion" to "hard refuse until resolved." Ships for Claude Code, Codex, Gemini CLI, opencode, Cursor, Windsurf, and other harnesses via the same installer pattern as caveman.

What it does

Before the agent acts on a plan, it runs an internal challenge pass:

  • Gap detection — what's missing from your spec that will cause rework later? (auth model, error states, who calls this, where it persists, what happens on retry)
  • Contradiction detection — does this requirement conflict with something you said three turns ago, or with code already in the repo?
  • Loop detection — have you tried this exact approach before and abandoned it? (reads memory + recent conversation)
  • Assumption flagging — what is the agent about to assume that you haven't actually said?

Then it pushes back proportionally to your chosen intensity:

Mode Behavior
pushback gentle One line: "Worth confirming X before I start?" Then proceeds.
pushback default Lists 1–3 specific concerns, asks for direction, waits.
pushback firm Refuses to write code until ambiguity is resolved. Forces a planning round.
pushback off Standard agent behavior.

Why this matters for vibe-coding

In an AI-first workflow, the bottleneck is no longer typing speed — it's specification clarity. A 10-minute planning conversation that surfaces one contradiction is worth more than 2 hours of code that has to be redone. pushback is designed to make that 10 minutes happen automatically, instead of relying on you to remember to ask "wait, what about X?"

The expensive failure mode it prevents: agent builds the wrong thing very fast, you ship it, three days later you find the gap.

Loop detection (the killer feature)

pushback reads your project's memory store (e.g. [[cavemem]], ~/.claude/projects/*/memory/) plus the recent conversation. If it sees:

  • You're describing an approach you tried and abandoned two sessions ago
  • You're asking for the same fix you already asked for, on the same file, in a previous session
  • Your current plan conflicts with a decision recorded in memory as "Why: we ruled this out because..."

…it surfaces that explicitly: "You marked this approach as ruled-out on 2026-05-21 because of the migration risk. What changed?"

This is the opposite of sycophancy: the agent holds you accountable to your own past decisions.

Modes

/pushback gentle      one-line suggestion, then proceed
/pushback             default — 1-3 concerns, ask, wait
/pushback firm        refuse code until ambiguity resolved
/pushback off         disable for session
/pushback now         force one challenge pass on current context

Install

curl -fsSL https://raw.githubusercontent.com/USER/pushback/main/install.sh | bash

(scaffold — not published yet; see HANDOFF.md)

Configuration

~/.config/pushback/profile.json:

{
  "default_mode": "default",
  "domains": {
    "schema_changes": "firm",
    "auth": "firm",
    "ui_tweaks": "gentle"
  },
  "never_pushback_on": ["typo fixes", "renames", "comment changes"],
  "memory_sources": [
    "~/.claude/projects/*/memory/",
    "~/.cavemem/"
  ]
}

Per-domain intensity lets you say "be paranoid about migrations, chill about CSS." All fields optional.

Pairs well with

  • [[chronos]] — time-aware pushback ("you've been on this for 45 minutes, want me to challenge the approach?")
  • [[cavemem]] — pushback reads memory to find ruled-out approaches and prior decisions
  • [[cavekit]] — spec-driven loop; pushback challenges the spec before the loop starts

About

Make your AI agent productively disagree with you. Skill + hooks, multi-harness.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors