Files
claude-code/plugins/accept-with-feedback
Claude 411f17c228 feat: Add accept-with-feedback plugin
Add a new plugin that allows users to approve permission requests while
providing guidance to Claude. This addresses the request for an "accept
with feedback" option (similar to the existing "reject with feedback"
for plans).

The plugin includes:
- PermissionRequest hook to intercept permission prompts
- /accept-feedback command for one-time feedback
- /configure-feedback command for persistent rules
- Configuration file support for automated feedback rules

Users can now provide context like "make sure to add error handling"
when approving operations, and Claude receives this as guidance.
2025-12-14 16:13:27 +00:00
..

Accept with Feedback

A Claude Code plugin that lets you approve operations while providing guidance to Claude. Instead of just accepting or rejecting permission requests, you can accept with feedback - approving the operation while giving Claude additional context or instructions.

Why?

Sometimes you want to approve an operation but also want to guide Claude's behavior:

  • "Yes, edit that file, but make sure to add error handling"
  • "Okay to run those tests, but skip the slow integration tests"
  • "Go ahead and commit, but use conventional commit format"

This plugin bridges the gap between simple approval and rejection-with-feedback.

Installation

This plugin is included in the Claude Code repository. Enable it in your settings or use:

claude /plugin install accept-with-feedback

Usage

One-time feedback

Use the /accept-feedback command to queue feedback for the next permission request:

/accept-feedback Make sure to preserve backwards compatibility

When Claude next asks for permission (e.g., to edit a file), the operation will be automatically approved and Claude will receive your guidance as a system message.

Persistent feedback rules

Create rules that automatically provide feedback for certain types of operations. Add configuration to .claude/accept-feedback.json:

{
  "rules": [
    {
      "matcher": "Edit|Write",
      "conditions": {
        "file_path": ".py"
      },
      "feedback": "Follow PEP 8 style and add type hints to all functions."
    },
    {
      "matcher": "Bash",
      "conditions": {
        "command": "npm"
      },
      "feedback": "Use --legacy-peer-deps if you encounter peer dependency issues."
    }
  ]
}

Use /configure-feedback for an interactive configuration experience.

Configuration

Rule properties

Property Description Example
matcher Tool name pattern "Edit", "Write|Edit", "*"
conditions Optional filters on tool input {"file_path": ".ts"}
feedback Guidance message for Claude "Add JSDoc comments"

Configuration locations

  • User-level: ~/.claude/accept-feedback.json
  • Project-level: .claude/accept-feedback.json (takes precedence)

Commands

Command Description
/accept-feedback <message> Queue feedback for the next permission request
/configure-feedback Interactive configuration of persistent rules

How it works

  1. The plugin uses a PermissionRequest hook to intercept permission requests
  2. When a permission request occurs:
    • If there's pending feedback (from /accept-feedback), approve with that feedback
    • If a configured rule matches, approve with the rule's feedback
    • Otherwise, let the normal permission flow proceed
  3. Feedback is sent to Claude as a system message, providing guidance for the operation

Examples

Example 1: One-time guidance

You: /accept-feedback Please add comprehensive error handling

Claude: I'll edit src/api.ts to add the new endpoint...
[Permission automatically approved with your feedback]

Claude: I've added the endpoint with try-catch blocks and proper error responses...

Example 2: Persistent Python style rules

.claude/accept-feedback.json:

{
  "rules": [
    {
      "matcher": "Edit|Write",
      "conditions": {
        "file_path": ".py"
      },
      "feedback": "Use Google-style docstrings and add type hints to all function signatures."
    }
  ]
}

Every time Claude edits a Python file, it receives this style guidance.

Example 3: Git workflow rules

{
  "rules": [
    {
      "matcher": "Bash",
      "conditions": {
        "command": "git commit"
      },
      "feedback": "Use conventional commit format: type(scope): description"
    }
  ]
}

Tips

  • Use specific matchers to avoid unnecessary approvals
  • Conditions use substring matching - ".py" matches any path containing .py
  • Combine with other permission management for a comprehensive workflow
  • Feedback is visible in the conversation, so Claude can reference it
  • Rejecting with feedback: Built into Claude Code's plan rejection flow
  • Permission hooks: See the hook development guide