AI agent skill · by @shareAI-lab
Permissions Debug
Troubleshoot Kode permission prompts/denials (tool allowlists, commandAllowedTools, dontAsk fail-closed, subagent inheritance). Use when tools are unexpectedly blocked, permission prompts repeat, or behavior differs between main agent and subagents.
Archived 2026-10-23 · Source updated 2026-08-27 · License: Apache-2.0. Check the original repository for the latest version.
SKILL.md instructions
# Permissions Debug (Kode-first, fail-closed) ## Non-negotiables - Do not auto-escalate permissions. If an action would normally require user approval, keep it interactive and explain why. - Prefer **minimal, reversible** permission changes and verify immediately. - In `dontAsk` contexts, treat “would prompt” as **deny** (fail-closed). Do not try to bypass. ## Fast triage (what to check first) 1. **Confirm what is blocked** - Look for the exact tool name and the rejection message. - If the failure is from a subagent, confirm whether the parent context was more restricted. 2. **Inspect approved tools / project allowlist** - Use `SlashCommand` to run `/approved-tools list` and confirm whether the tool (or its rule category) is present. - If the list is unexpectedly long or contains stale entries, remove only the minimum needed with `/approved-tools remove <tool>`. 3. **Check per-command constraints** - Some flows apply `commandAllowedTools` constraints (slash command / skill execution contexts). Confirm the command’s `allowed-tools` frontmatter and whether it should be restrictive. ## Verification loop (keep it tight) - Re-run the exact action that was blocked and confirm: - whether the prompt appears (interactive modes), or - whether the tool is allowed/denied deterministically (headless / `dontAsk`). ## Forensics (when “it should have worked”) - Inspect the latest session artifacts under `~/.kode/` (messages + errors) to confirm what tool call was attempted and why it was denied. - If a background shell was involved, cross-check task output files in `~/.kode/**/tasks/` for the corresponding `bashId`.