[BUG] autoApprove for skills not working - still prompts for permission
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Details:
- Settings configuration shows "autoApprove": ["git-use"] at ~/.claude/settings.json:33-35
- Skill exists at ~/github/dotfiles/claude/.claude/skills/git-use/SKILL.md
- When invoking the skill with Skill tool, it still prompts for user permission despite autoApprove setting
- Expected: Skill should execute immediately without prompting
- Actual: Tool use is blocked/rejected and requires user approval
Here is the content of ~/.claude/skills/git-use/SKILL.md
---
name: git-use
description: Git operations with conventional commits.
TRIGGER: git commit, git push, git status, commit changes
---
Git Operations
Handle git operations using
Conventional Commits v1.0.0.
Commit Message Format
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Types
| Type | Description | SemVer |
| ---------- | -------------------------- | ------ |
| feat | New feature | MINOR |
| fix | Bug fix | PATCH |
| docs | Documentation only | - |
| style | Formatting, no code change | - |
| refactor | Neither fix nor feature | - |
| perf | Performance improvement | PATCH |
| test | Adding/correcting tests | - |
| build | Build system, dependencies | - |
| ci | CI configuration | - |
| chore | Other non-src/test changes | - |
| revert | Reverts a previous commit | - |
Rules
- Description: imperative mood, lowercase, no period, ≤50 chars (72 for body)
- Scope: noun in parentheses describing affected area, e.g.,
feat(api):,fix(parser):,docs(readme): - Body: explain _what_ and _why_, not _how_ (blank line after description)
- Footer: use for breaking changes, issue refs, co-authors
- Breaking changes: append exclamation mark after type/scope OR add
BREAKING CHANGE:footer (triggers MAJOR)
- Example:
feat!:orrefactor(api)!: - Use double quotes in shell commands, not single quotes
Examples
feat: add user authentication
fix: resolve memory leak in data processor
docs: correct spelling of CHANGELOG
feat(lang): add Polish language
fix: prevent racing of requests
Introduce a request id and a reference to latest request.
Dismiss incoming responses other than from latest request.
Refs: #123
feat!: drop support for Node 14
BREAKING CHANGE: Node 14 has reached end-of-life. Minimum required version is now Node 18.
refactor(api)!: rename endpoints for consistency
/users → /api/users
/posts → /api/posts
BREAKING CHANGE: All REST endpoints now prefixed with /api
revert: revert "feat: add experimental caching layer"
This reverts commit 676104e.
The caching implementation caused data inconsistencies in production.
Refs: #456
Commit Workflow
git status— review all changesgit diff [--staged]— understand what changed- Analyze grouping — split if changes are logically independent:
- Different types (
feat+fix→ 2 commits) - Unrelated areas (frontend + backend for different features → 2 commits)
- Keep related changes together (one feature across multiple files → 1
commit)
- For each logical group:
- Stage specific files:
git add <files>(never blindgit add .) - Commit:
- Simple:
git commit -m "type(scope): description" - With body:
git commit -m "type: description" -m "Body paragraph" - With editor:
git commit(for complex messages with body/footer)
git status— verify completion
Rules
Pre-commit Checks
Before committing, verify:
- Secrets: Exclude
.env,credentials.json, API keys, tokens - Tests: Run
npm test,pytest,cargo test, or project-specific commands - Linting: Run linters/formatters (
eslint,prettier,ruff, etc.) - Hooks: Check if pre-commit hooks exist (
.git/hooks/pre-commit) - Unintended files: Review
git statusoutput carefully
Amending
git commit --amend # edit message and content
git commit --amend --no-edit # keep message, add staged changes
⚠️ Warn user if commit was already pushed (requires --force).
Push
git push # existing upstream
git push -u origin <branch> # new branch
What Should Happen?
Claude should use the skill without asking my permission
Error Messages/Logs
Steps to Reproduce
Create the skill and configuration to allow the skill as described in "what's wrong".
Type "git commit" in Claude Code.
Claude Code asks for permission to use the skill.
Claude Model
Sonnet (default)
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.0.76 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Other
Additional Information
_No response_
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗