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.
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
- The plugin uses a
PermissionRequesthook to intercept permission requests - 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
- If there's pending feedback (from
- 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
Related
- Rejecting with feedback: Built into Claude Code's plan rejection flow
- Permission hooks: See the hook development guide