[BUG] autoApprove for skills not working - still prompts for permission

Resolved 💬 3 comments Opened Jan 2, 2026 by ThorstenRhau Closed Feb 17, 2026

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

  1. Description: imperative mood, lowercase, no period, ≤50 chars (72 for body)
  2. Scope: noun in parentheses describing affected area, e.g., feat(api):, fix(parser):, docs(readme):
  3. Body: explain _what_ and _why_, not _how_ (blank line after description)
  4. Footer: use for breaking changes, issue refs, co-authors
  5. Breaking changes: append exclamation mark after type/scope OR add BREAKING CHANGE: footer (triggers MAJOR)
  • Example: feat!: or refactor(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

  1. git status — review all changes
  2. git diff [--staged] — understand what changed
  3. 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)

  1. For each logical group:
  • Stage specific files: git add <files> (never blind git 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)
  1. 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 status output 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_

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗