Perguntas

O que o allowed-tools faz no frontmatter de uma skill?

Ele lista ferramentas que uma skill pode usar sem pedir permissão. A especificação o define como uma string de ferramentas pré-aprovadas separadas por espaço e o marca como experimental. No Claude Code a aprovação vale só para o turno que invoca a skill e não restringe nada: ferramentas fora da lista seguem com as suas permissões de sempre.

O que a especificação fixa e o que deixa em aberto

O campo é opcional. A especificação só diz que ele é uma string de ferramentas pré-aprovadas para rodar, separadas por espaço, que é experimental e que o suporte pode variar entre implementações de agentes. O exemplo dela é Bash(git:*) Bash(jq:*) Read. Ela não define como um padrão desses é comparado, então uma skill que depende do campo precisa ser testada em cada agente que a carrega.

Como o Claude Code aplica o campo

O Claude Code trata a lista como permissão para o turno que invoca a skill. A concessão é apagada quando você envia a próxima mensagem, mesmo com o texto da skill ainda no contexto, e invocá-la de novo a reaplica. Ele não restringe nada: todas as ferramentas continuam disponíveis, e as que estão fora da lista passam pelas suas permissões como antes. Para remover ferramentas enquanto uma skill está ativa existe outro campo, disallowed-tools.

Leia o campo antes de rodar as skills de um repositório

A confiança do workspace não controla esse campo. O Claude Code aplica o allowed-tools de uma skill de projeto até com -p numa pasta nunca marcada como confiável, então uma skill versionada em um repositório pode conceder a si mesma acesso amplo. A documentação recomenda revisar esse campo antes de rodar o Claude Code ali. Uma organização pode fazê-lo ser ignorado nas skills de projeto e pessoais com allowManagedPermissionRulesOnly nas configurações gerenciadas.