Plugin do Xcode da Apple para o Claude Code: o que ele instala

Do guia: Claude Code Comprehensive Guide

O plugin xcode da Apple para o Claude Code são 15 linhas no marketplace oficial da Anthropic e nenhum arquivo: a entrada guarda um único comando, xcrun agent plugin path --plugin-format claude, e o Xcode do seu próprio Mac grava o plugin quando esse comando é executado.12 A entrada foi mesclada em 6 de novembro de 2026 (UTC). Não encontrei nenhum anúncio da Apple nem da Anthropic nos lugares que verifiquei.2 No Xcode 27.2, o comando imprime um diretório com 160 arquivos: 16 skills e uma entrada de servidor MCP, sem hooks e sem agents. O inventário do próprio Claude Code estima cerca de 4.463 tokens adicionados a cada sessão, e o comando do bridge que essa entrada de servidor indica listou 54 ferramentas em uma sessão minha.2 Li o diretório e o carreguei em sessões descartáveis com --plugin-dir. Não aceitei a instalação pelo marketplace, e cada seção diz de onde vem cada afirmação.

TL;DR

  • A entrada do marketplace contém um comando, não um plugin. Todas as outras entradas que buscam conteúdo fora do catálogo trazem um SHA de commit. O xcode não tem nada para fixar, e é o único nome em uma lista de isenções no validador do marketplace.13
  • Instalar significa que uma pessoa aceita esse comando. O Claude Code o imprime e pergunta, e a flag que pula a pergunta não faz nada quando um agent executa a instalação de dentro de uma sessão.6
  • Você pode ler tudo antes. O comando imprime o diretório, e claude --plugin-dir <dir> plugin details xcode-integration faz o inventário dele sem iniciar uma sessão.72
  • No Xcode 27.2, o inventário são 16 skills, zero agents, zero hooks e um servidor MCP que executa xcrun mcpbridge. Uma sessão lista 15 dos skills para você. O cabeçalho do décimo sexto o marca como exclusivo do modelo.29
  • Se você já adicionou o bridge com claude mcp add, o Claude Code suprime a cópia do plugin como duplicata. No meu Mac, o plugin adicionou os skills e mais nada.28
  • A aceitação cobre a string do comando. O que o comando imprime acompanha o Xcode que você tem selecionado, e nenhuma mudança no catálogo sinaliza a diferença.45

O que chegou ao marketplace

A listagem inteira é um único objeto JSON. Aqui está, como estava no anthropics/claude-plugins-official em 11 de novembro de 2026, sem alterações desde o merge:1

{
  "name": "xcode",
  "displayName": "Xcode",
  "description": "Work with Xcode projects from Claude Code: build, run, and test schemes, render SwiftUI previews, drive simulators and devices, read build logs and diagnostics, and search Apple developer documentation.",
  "author": {
    "name": "Apple Inc."
  },
  "category": "development",
  "source": {
    "source": "command",
    "command": "xcrun agent plugin path --plugin-format claude",
    "mode": "link"
  },
  "homepage": "https://developer.apple.com/xcode/"
}

O catálogo tinha 317 plugins nesse dia. Eu os classifiquei pela origem do conteúdo:1

Tipo de origem Entradas Fixadas em um SHA de commit
Um repositório git, por URL 163 Todas as 163
Um subdiretório de um repositório git 99 Todas as 99
Uma pasta dentro do repositório do marketplace 54 Não se aplica; a pasta está no histórico do próprio catálogo
Um comando executado na sua máquina 1 (xcode) Não; não há nada para fixar

O histórico de como a entrada chegou ali mostra o quanto ela é incomum. Um contribuidor abriu a pull request #6259, intitulada “Add Xcode plugin (xcode)”, em 18 de setembro de 2026. Um bot respondeu que o repositório só aceita contribuições de membros da equipe da Anthropic, e um mantenedor aprovou a mudança 19 minutos depois de ela ser aberta. Em 30 de setembro, uma segunda pull request, a #6338, levou o mesmo commit para um branch dentro do repositório, para que as verificações dele pudessem rodar.1

As verificações não passaram do jeito que estavam escritas. Uma terceira pull request, a #7015, diz que o validador do marketplace reprovou a entrada do Xcode em três pontos: ela não tem SHA, os espaços do comando contam como metacaracteres de shell, e ela não tem URL para clonar. A correção passou o workflow para uma versão do validador com um novo input command-exempt e definiu esse input como "xcode". O comentário acima da linha chama cada nome da lista de “listing decision”, que precisa da aprovação da equipe de operações do marketplace.3 As três pull requests foram encerradas em 6 de novembro (UTC), em um intervalo de nove minutos: a #7015 foi aberta às 00:49 e mesclada às 00:53, a #6338 foi mesclada às 00:55, e a #6259 foi fechada como duplicata às 00:58.13

Nenhuma das duas empresas disse nada a respeito, até onde consegui encontrar. Em 11 de novembro, verifiquei os feeds de notícias para desenvolvedores, de lançamentos e do newsroom da Apple, a página do Xcode da Apple, a página de notícias da Anthropic e o blog do Claude, e não encontrei nenhuma menção ao plugin. A documentação da Apple para agents externos ainda descreve a adição manual do bridge com claude mcp add e não menciona nenhum plugin.210 A base para dizer que o plugin é da Apple é o campo de autor da entrada e o fato de que o comando vem dentro do Xcode.

A entrada guarda um comando, não um plugin

O Claude Code adicionou o tipo de origem command na versão 2.1.229, em 12 de agosto de 2026.6 A documentação o descreve como a origem a usar quando uma ferramenta na máquina do usuário produz o diretório do plugin, e o exemplo dela é uma IDE que gera um plugin para o toolchain que o usuário selecionou.4 O contrato é pequeno:

  • O comando imprime uma linha, o caminho absoluto de um diretório de plugin, e sai com 0. O limite de tempo padrão é de 60 segundos, e a entrada do Xcode não define um próprio.41
  • O Claude Code executa o comando quando você instala ou atualiza o plugin, e de novo uma vez por sessão para um plugin ativado, em segundo plano, pouco depois de a sessão começar. Ele pula as execuções em segundo plano quando CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC está definida.5
  • No modo link, o modo que a entrada do Xcode usa, o Claude Code não copia nada. Ele cria links para as entradas de nível superior do diretório e carrega os arquivos onde eles estão. A versão vem do caminho real do diretório e das suas entradas de nível superior, não do conteúdo dos arquivos.4
  • O Claude Code executa apenas o comando exato que uma pessoa aceitou. Se um marketplace mudar depois o comando ou o modo dele, as execuções em segundo plano param até que cada usuário aceite o novo.5
  • Uma organização pode desativar o tipo de origem inteiro com a configuração gerenciada disableCommandPluginSources.4

Essas regras combinam com o nome de diretório que o Xcode usa. No meu Mac, o comando imprime um caminho que leva o número de build do Xcode (nome de usuário substituído):

$ xcrun agent plugin path --plugin-format claude
/Users/<you>/Library/Developer/Xcode/CodingAssistant/ExportedPlugins/27B52/claude

Um novo build do Xcode significa um novo caminho, e um novo caminho é o que diz ao Claude Code que o plugin mudou. Com o diretório já montado e nenhum app Xcode em execução, o comando retornou em cerca de 0,2 segundo em três execuções cronometradas. O meu Mac está com o modo MCP headless do Xcode ativado, a prévia que sudo xcrun mcp-server enable inicia e que uma seção mais adiante aborda. Aqui, a primeira chamada para cada build do Xcode gravou o diretório por meio do Xcode Service, um auxiliar em segundo plano dentro do bundle do Xcode, e não pelo app Xcode. Cronometrei apenas chamadas feitas quando o diretório já existia, e não executei o comando com esse modo desativado.2

As mesmas regras mudam o que uma revisão consegue cobrir. A documentação de segurança do Claude Code diz para ler o código-fonte de um plugin antes de instalar: abrir a homepage ou o repositório do marketplace e encontrar ali o diretório do plugin.7 No caso do xcode, a homepage é a página de produto do Xcode, da Apple, e o repositório contém as 15 linhas acima. O conteúdo do plugin só existe depois que o seu Xcode o grava, então a revisão acontece no seu Mac, com o seu build do Xcode.

O que o Claude Code pede que você aceite

Como a instalação executa um programa, o Claude Code imprime o comando e pergunta antes de executá-lo. Em um terminal, a pergunta é Run this command now? [y/N].6 Executei a instalação no Claude Code 2.1.322 a partir de um shell sem terminal conectado, e ele recusou em vez de perguntar. As quatro primeiras linhas da saída:2

$ claude plugin install xcode@claude-plugins-official --scope local
"xcode" is installed by running a command from marketplace "claude-plugins-official" on this machine:
  xcrun agent plugin path --plugin-format claude
  (mode "link": its output directory is used in place (linked, not copied))
Not an interactive terminal, so the command was only displayed, not accepted. Run this in your own terminal (outside the Claude Code session) to confirm the command shown above.

Três detalhes dessa etapa importam.

Um agent não pode aceitar por você. -y aceita o comando exibido a partir do seu próprio terminal. A referência da CLI diz que o Claude Code ignora a flag quando a instalação roda dentro de uma sessão, a partir da ferramenta Bash ou de um hook.6 Se você pedir ao Claude Code para instalar o plugin, espere que ele devolva o comando para você.

Um script pode aceitar um comando exato. Com --json, a instalação recusada informa um objeto shownCommand, e --accept-command <sha256>, adicionado na 2.1.271, aceita esse comando e nenhum outro. A referência diz para passá-lo a partir do seu próprio terminal, porque a flag não tem efeito dentro de uma sessão do Claude Code, então um agent também não consegue aceitar pelo hash. A documentação vincula o hash ao comando, ao plugin e ao catálogo do marketplace, e diz que o Claude Code mostra o comando de novo se qualquer um dos três tiver mudado.6 O meu, extraído do resultado de uma linha e reformatado:2

"shownCommand": {
  "kind": "command_source",
  "pluginId": "xcode@claude-plugins-official",
  "command": "xcrun agent plugin path --plugin-format claude",
  "mode": "link",
  "catalogRevision": "gcs:43fd1f9db0941b2b83cb62268e35970d4a67c202",
  "sha256": "b6a49a80f0917b25ceb38fa52e95dacca7ad78893aeb9f0463c62b3d73ca1a48"
}

Pegue o valor da sua própria execução com --json. O valor acima é diferente de um SHA-256 simples da string do comando, que calculei para comparar, e a documentação diz que um hash deixa de valer assim que o catálogo muda. O Claude Code pode recusar um valor copiado deste post.26

Uma sessão tem a sua própria rota. O restante da mensagem de recusa indica um segundo lugar para aceitar: o painel de detalhes do plugin em /plugin. Não abri esse painel para o xcode.2

Leia o plugin antes de aceitá-lo

O comando que o marketplace quer executar é um comando que você mesmo pode executar. Três linhas mostram aquilo para o qual a instalação criaria os links:

# 1. Ask Xcode for the directory. The first call for an Xcode build writes it.
DIR="$(xcrun agent plugin path --plugin-format claude)"

# 2. Inventory it without starting a session.
claude --plugin-dir "$DIR" plugin details xcode-integration

# 3. Read the one file that starts a process.
cat "$DIR/.mcp.json"

A linha 2 é a forma documentada de listar o que o Claude Code encontra em um diretório de plugin: ela lê os arquivos sem iniciar uma sessão.7 O nome a passar é o que está no manifesto do plugin, xcode-integration. Com o nome do catálogo, xcode, o mesmo comando responde Plugin "xcode" not found.2 No Xcode 27.2 (27B52) e no Claude Code 2.1.322, a primeira parte do inventário dizia:2

xcode-integration 1.0.0
  Description: Xcode-managed plugin for skills and services that integrate with the IDE.
  Source: xcode-integration@inline

Component inventory
  Skills (16)  accessibility-dynamic-type-specialist, accessibility-sufficient-contrast-specialist, accessibility-voiceover-specialist, adopt-c-bounds-safety, app-intents-specialist, app-intents-whats-new-27, app-resizability, audit-xcode-security-settings, building-document-based-swiftui-applications, device-interaction, modernize-tests, swiftui-specialist, swiftui-whats-new-27, translation, translation-coordinator, xctrace
  Agents (0)
  Hooks (0)
  MCP servers (1)  xcode  (tool schemas resolved at runtime; not counted)
  LSP servers (0)

Projected token cost
  Always-on:   ~4,463 tok   added to every session

A página de segurança do Claude Code lista as partes de um plugin que executam código por conta própria, fora das regras de permissão que regem as chamadas de ferramenta do Claude: hooks, monitors, mods e processos de servidores MCP e LSP.7 O diretório da Apple tem uma delas, o servidor MCP. O nível superior dele tem três entradas: a pasta do manifesto, .mcp.json e skills/. Os 160 arquivos são 157 arquivos Markdown, dois arquivos JSON e um script Python. O script tem 69 linhas e fica dentro do skill audit-xcode-security-settings, importa apenas argparse, json, re e pathlib, e a descrição dele mesmo diz que ele filtra uma saída salva de configurações de build, deixando só as entradas relevantes para a segurança. Ele só roda se um agent o executar.2

O claude plugin validate aprova o diretório com um aviso: o manifesto não indica autor. A mesma execução aplica um subconjunto das verificações de envio do diretório do claude.ai, da Anthropic, uma listagem separada do marketplace oficial. Essas verificações apontam dois problemas pelos quais esse diretório recusaria um envio, a falta de README e a falta de LICENSE, e um aviso, a falta de ícone. Elas não se aplicam a esta listagem: o guia de publicação diz que o marketplace oficial não aceita envios pelo portal desse diretório.212 A pasta não declara termos de licença próprios. Eu a trato como parte do Xcode.

O que uma sessão recebe: 16 skills, 15 deles listados

Carreguei o diretório em sessões de um único prompt, em um projeto vazio, com claude -p --plugin-dir "$DIR". Um plugin carregado com --plugin-dir dura apenas aquela sessão e não instala nada.2

O evento de abertura da sessão listou o plugin como xcode-integration@inline, versão 1.0.0, e o log de depuração registrou 16 skills carregados a partir dele. A lista de skills e slash commands da própria sessão tinha 15 deles. O que faltava, translation-coordinator, define user-invocable: false no cabeçalho, a configuração que esconde um skill do menu / e continua permitindo que o Claude o invoque.9 Quando pedi ao modelo, na mesma sessão, que imprimisse os skills que tinha, ele imprimiu 16 nomes, o coordenador entre eles. Essa última verificação é o relato do próprio modelo.2

Todo nome leva o prefixo xcode-integration:, como em /xcode-integration:swiftui-specialist. O catálogo chama o plugin de xcode e o manifesto o chama de xcode-integration, e a referência de carregamento do Claude Code diz que os dois nomes têm funções diferentes: o nome do catálogo é a chave de instalação, e o nome do manifesto é o namespace dos componentes do plugin.5 Observei o prefixo com --plugin-dir. Para uma instalação pelo marketplace, estou me baseando nessa página.

A estimativa do Claude Code para o custo de cada skill, tirada do restante da mesma saída, ao lado da indicação de se os arquivos do skill citam alguma ferramenta do bridge:2

Skill Sempre no contexto Quando invocado Ferramentas do bridge que cita
app-intents-specialist ~930 ~2.2k Nenhuma
app-intents-whats-new-27 ~780 ~3.3k Nenhuma
swiftui-specialist ~340 ~1.5k Nenhuma
swiftui-whats-new-27 ~340 ~1.6k Nenhuma
adopt-c-bounds-safety ~320 ~740 Nenhuma
building-document-based-swiftui-applications ~310 ~900 Nenhuma
app-resizability ~230 ~6.9k Nenhuma
audit-xcode-security-settings ~210 ~21.7k 11
accessibility-voiceover-specialist ~180 ~6.9k 1
xctrace ~170 ~380 Nenhuma
translation ~160 ~9k 4
translation-coordinator (só para o modelo) ~150 ~4.2k 4
accessibility-dynamic-type-specialist ~140 ~3.6k 1
accessibility-sufficient-contrast-specialist ~120 ~4.9k 1
device-interaction ~50 ~4.6k 4
modernize-tests ~40 ~3.5k Nenhuma

Os números são tokens, e são estimativas da ferramenta. As linhas estão arredondadas e somam cerca de 4.470; o total do próprio Claude Code são os ~4.463 acima. Os dois skills de App Intents respondem por cerca de 1.710 desse total, porque as descrições deles são longas. A estimativa deixa de fora os schemas das ferramentas do servidor MCP, que, segundo o inventário, são resolvidos em tempo de execução. O que cada skill ensina está no meu post mais longo sobre os skills que o Xcode 27 traz e as duas formas de tirá-los de lá.

A metade MCP: uma entrada de servidor, 54 ferramentas aqui

O .mcp.json declara um servidor stdio chamado xcode cujo comando é xcrun mcpbridge. A documentação da Apple dá o mesmo comando para conectar o bridge manualmente: claude mcp add --transport stdio xcode -- xcrun mcpbridge.10 As minhas sessões do Claude Code já tinham essa entrada. Em uma sessão com a entrada adicionada manualmente e sem o plugin, o bridge se conectou em 339 milissegundos, se identificou como xcode-tools, versão 25464, e listou 54 ferramentas.2 Um post anterior meu citava 20 ferramentas para o bridge no Xcode 26.3, uma contagem que aquele post baseia nos meus testes da época e em um passo a passo de terceiros para o qual ele aponta.

Agrupei as 54 pelo nome:2

Área Ferramentas Exemplos
Arquivos e estrutura do projeto 15 XcodeRead, XcodeWrite, XcodeUpdate, XcodeRM, XcodeNewTarget
Build, execução e diagnósticos 11 BuildProject, RunProject, GetBuildLog, XcodeRefreshCodeIssuesInFile
Configurações de build, flags, entitlements, Info.plist 6 GetTargetBuildSettings, UpdateTargetBuildSetting, AddEntitlement
Testes 5 GetTestList, RunSomeTests, RunAllTests
Interação com dispositivos e simuladores 5 DeviceInteractionStartSession, DeviceInteractionSynthesize
String Catalogs e localização 4 LocalizationPlanner, StringCatalogEdit
Relatórios de crash e de desempenho em campo 4 GetTopCrashIssues, GetFieldPerformanceIssueLogs
Previews, snippets e o depurador 3 RenderPreview, RunCodeSnippet, InvokeDebuggerCommand
Documentação 1 DocumentationSearch

A lista vai mais longe do que a descrição do marketplace sugere. O XcodeRM remove arquivos do projeto e, por padrão, move os arquivos subjacentes para o Lixo. O InvokeDebuggerCommand envia um comando do lldb à sessão de depuração ativa do Xcode. O GetTopCrashIssues diz, na própria descrição, que recupera assinaturas de crash do seu app a partir do serviço de relatórios de crash da Apple.2 Cada uma dessas ações é uma chamada de ferramenta, então as regras de permissão do Claude Code se aplicam a ela. Já o processo do servidor roda fora do sandbox, como o servidor MCP de qualquer plugin.7

Os skills e as ferramentas fazem referência uns aos outros. Sete dos 16 skills citam ferramentas do bridge pelo nome sem prefixo. Um dos sete, audit-xcode-security-settings, também dá a forma genérica com prefixo, mcp__<server>__XcodeGlob, diz que o nome do servidor varia conforme o ambiente e instrui o agent a não escrever um nome fixo no código. A dependência também corre no sentido contrário. As descrições das quatro ferramentas de String Catalogs e localização dizem ao agent para ativar um skill do plugin antes de chamar a ferramenta: LocalizationPlanner e StringCatalogRead citam xcode-integration:translation-coordinator, e StringCatalogContext e StringCatalogEdit citam xcode-integration:translation. As outras 50 descrições não citam nenhum skill.2 Uma sessão com o bridge adicionado manualmente e sem o plugin tem as quatro ferramentas e nenhum dos dois skills. Alguém que comentou na pull request mesclada perguntou o que a listagem acrescenta, já que o servidor MCP do Xcode já funcionava.1 No meu Mac, a resposta são os skills, e quatro das ferramentas do próprio bridge pedem dois deles pelo nome.

Se você já adicionou o bridge manualmente

O Claude Code ordena as definições de servidores MCP por precedência: primeiro os escopos local, de projeto e de usuário, depois os servidores fornecidos por plugins, depois os conectores do claude.ai. Um servidor que uma organização fornece por meio de configurações gerenciadas fica acima de todos eles. O Claude Code compara o servidor de um plugin com os demais pelo endpoint, então um servidor de plugin com o mesmo comando de um que você configurou conta como duplicata, e o Claude Code se conecta uma única vez, usando a sua definição.8

As minhas sessões mostraram exatamente isso. Com o plugin carregado ao lado da minha entrada xcode de escopo de usuário, a lista de servidores da sessão tinha xcode com a origem user e nenhuma entrada para o servidor do plugin, e o log de depuração dizia o porquê (timestamp e nível de log removidos):2

Suppressing plugin MCP server "plugin:xcode-integration:xcode": duplicates manually-configured "xcode"

O efeito prático está nos nomes. Enquanto a entrada adicionada manualmente permanecer, as ferramentas mantêm os nomes mcp__xcode__BuildProject, mcp__xcode__XcodeRead e assim por diante. A documentação dá ao servidor de um plugin o nome plugin:<plugin>:<server> e às ferramentas dele a forma mcp__plugin_<plugin>_<server>__<tool>, e diz que a forma das ferramentas é a que se usa em regras de permissão e em matchers de hooks.8 Por essa regra, uma sessão com o plugin e sem a entrada adicionada manualmente chamaria a mesma ferramenta de mcp__plugin_xcode-integration_xcode__BuildProject. Não medi esse arranjo, porque a minha configuração tem a entrada adicionada manualmente. Se você tem regras de allow ou hooks escritos para nomes mcp__xcode__, remover a entrada adicionada manualmente depois de instalar o plugin equivale a uma renomeação, pela regra de nomes da documentação.

Duas camadas de permissão, e a instalação toca em uma

Aceitar o comando resolve o lado do Claude Code. O Xcode mantém a sua própria barreira, e nada no diretório do plugin consegue abri-la: o diretório não tem hooks nem etapa de instalação.

A Apple documenta essa barreira para um Xcode em execução. Nas configurações de Intelligence do Xcode, em Model Context Protocol, um menu pop-up chamado “Allow External Agents to Use Xcode Tools” oferece Always, “While Xcode is Open” e Never, e o Xcode avisa você quando um agent externo se conecta.10 As notas de versão do Xcode 27 descrevem um segundo arranjo, uma prévia de um servidor MCP que funciona sem um workspace aberto. Ele fica desativado até você executar sudo xcrun mcp-server enable, e permite conceder a agents com assinatura de código a permissão de usar projetos dentro de uma árvore de diretórios.11

O meu Mac usa o segundo arranjo. O xcrun mcp-server status informa a permissão ativada, um agent permitido e 11 pastas permitidas.2 O agent permitido é o próprio Claude Code, identificado pela sua assinatura de código, então espero que um bridge iniciado pelo plugin fique sob a mesma concessão. Não testei isso. Também não vi o que o Xcode pergunta em um Mac em que você não aprovou nenhum agent e o plugin é a primeira coisa a iniciar o bridge.

O que muda quando o Xcode muda

Uma entrada de marketplace fixada muda quando o catálogo muda. A entrada do Xcode muda quando o Xcode muda. Três builds do Xcode no meu Mac, o release candidate do 27.1 (27A9275), o beta do 27.2 (27B5019j) e o 27.2 (27B52), produziram três diretórios, com 15, 15 e 16 skills. No beta do 27.2, o skill que os outros dois builds chamam de app-resizability se chama uikit-app-modernization, e o xctrace só existe no 27B52.2

O mecanismo é a execução de uma vez por sessão. Atualize o Xcode, ou selecione outra cópia, e o comando imprime um caminho diferente na próxima vez que rodar, o que, com um plugin instalado e ativado, normalmente é a execução em segundo plano da sessão seguinte. A referência de carregamento diz que o Claude Code então instala o resultado como uma nova versão e o recarrega na sessão interativa em andamento, com uma notificação, ou pede que você execute /reload-plugins quando recarregar ali mesmo invalidaria o cache de prompt da sessão.5 A sua aceitação anterior continua valendo, porque a string do comando é a mesma. Não vi essa recarga acontecer, já que não instalei o plugin.

Daí saem dois hábitos. Execute de novo as três linhas de revisão depois de uma atualização do Xcode, do jeito que você leria um changelog, e comece pela primeira linha, porque o caminho muda com o build. E, se um comando de agent não imprimir nada depois de uma atualização do Xcode, procure primeiro um Xcode que você não abriu (pgrep -lx Xcode). No meu Mac, outros comandos xcrun agent travaram enquanto um Xcode oculto esperava na tela de primeira inicialização, a causa provável que rastreei no post mais longo. O xcrun agent plugin path não travou em nenhuma execução minha. Se algum dia ele passar do limite de 60 segundos, a documentação diz que a instalação ou a atualização falha.4

Três formas de conectar o Xcode ao Claude Code

Bridge adicionado manualmente --plugin-dir, uma sessão Instalação pelo marketplace
Comando claude mcp add --transport stdio xcode -- xcrun mcpbridge claude --plugin-dir "$(xcrun agent plugin path --plugin-format claude)" claude plugin install xcode@claude-plugins-official
Skills da Apple Nenhum 16 no Xcode 27.2 16 no Xcode 27.2, a julgar pelo diretório
Ferramentas do bridge 54 aqui, com nomes mcp__xcode__<tool> As da entrada adicionada manualmente, quando existe uma; caso contrário, o servidor do próprio plugin, o que não medi O mesmo, a julgar pela documentação
Duração Até você removê-lo Uma sessão Até você desinstalá-lo; enquanto o plugin estiver ativado, o comando normalmente roda de novo a cada sessão
O que você aprova Um comando que você digitou Um comando que você digitou Um comando que o catálogo mostra a você
Medido para este post Sim Sim Apenas a mensagem de recusa

Principais conclusões

Para desenvolvedores de iOS que usam o Claude Code: - Execute primeiro as três linhas de revisão. No Xcode 27.2, elas mostram 16 skills, um servidor MCP e nenhum hook.2 - Instale a partir do seu próprio terminal com claude plugin install xcode@claude-plugins-official e compare o comando que ele exibe com o do catálogo: xcrun agent plugin path --plugin-format claude.16 - Conte com cerca de 4.463 tokens de descrições de skills em cada sessão, pela estimativa do Claude Code, antes de uma sessão invocar qualquer skill.2

Para desenvolvedores que já usam o bridge adicionado manualmente: - O plugin acrescenta os skills da Apple. O Claude Code suprime o servidor do plugin como duplicata, e os nomes das suas ferramentas ficam como estão enquanto a entrada adicionada manualmente permanecer.28 - As ferramentas de tradução esperam o plugin: as quatro ferramentas de String Catalogs e localização dizem ao agent para ativar um de dois skills que só o plugin fornece.2

Para equipes que revisam ferramentas antes de usá-las: - Nenhum commit fixa o conteúdo. Revise o diretório a cada build do Xcode e trate uma atualização do Xcode como uma atualização do plugin.14 - --accept-command <sha256> vincula uma instalação via script a um único comando e catálogo revisados, e disableCommandPluginSources desativa o tipo de origem para uma organização.46

Para autores de marketplaces e de plugins: - Com uma origem command, quem publica é a ferramenta na máquina do usuário. O marketplace oficial da Anthropic admite cada uma pelo nome, como uma isenção listada à sua regra de fixação.3

FAQ

O que é o plugin do Xcode da Apple para o Claude Code?

Uma entrada chamada xcode no marketplace oficial do Claude Code, da Anthropic, com “Apple Inc.” como autor. A entrada não contém nenhum arquivo de plugin. Ela guarda o comando xcrun agent plugin path --plugin-format claude, e, nos três builds do Xcode 27 que testei, o Xcode gravou o diretório do plugin no meu Mac quando o comando foi executado.12

Como instalo o plugin do Xcode no Claude Code?

Execute claude plugin install xcode@claude-plugins-official no seu próprio terminal e aceite o comando que ele exibe. Dentro de uma sessão, o lugar para aceitar é o painel de detalhes do plugin em /plugin, a julgar pela mensagem que a instalação recusada imprimiu.2 Um agent não pode aceitar o comando por você: o Claude Code ignora -y dentro de uma sessão.6 Eu mesmo não concluí a instalação. No escopo de usuário, que é o padrão, você recebe o plugin, e as descrições de skills dele, sempre ativas, em todos os projetos da máquina. --scope local o restringe a você em um único repositório, e --scope project o registra em .claude/settings.json, arquivo do qual você faz commit. Isso ativa o plugin para todos que trabalham no repositório e não baixa nada para as máquinas deles, então cada colaborador ainda executa a instalação uma vez por clone. A aceitação é por usuário: cada pessoa aceita o comando que o Claude Code mostra a ela. A minha própria tentativa usou --scope local.26 Para remover o plugin depois, a mesma referência dá claude plugin uninstall xcode@claude-plugins-official, com --scope quando você tiver instalado em outro lugar que não o escopo de usuário padrão.6

O que o plugin contém?

No Xcode 27.2 (27B52): 16 skills, um .mcp.json que declara um servidor executando xcrun mcpbridge e um manifesto de três campos. O inventário do Claude Code informa zero agents, zero hooks e zero servidores LSP.2

Preciso do plugin se já executei claude mcp add para o xcrun mcpbridge?

Você precisa dele para os skills. O Claude Code trata o servidor do plugin como uma duplicata do seu e o suprime, então as ferramentas não mudam. Os skills são novos, e quatro ferramentas do bridge, o conjunto de String Catalogs e localização, dizem ao agent para ativar antes um skill do plugin.28

Por que o Claude Code lista 15 skills quando a pasta tem 16?

O translation-coordinator define user-invocable: false. O Claude Code esconde um skill assim do menu / e ainda deixa o modelo invocá-lo.9 A lista de skills da sessão mostrou 15, e o modelo relatou 16.2

Quanto contexto o plugin usa?

O plugin details do Claude Code estima cerca de 4.463 tokens em cada sessão para as 16 descrições de skills. Invocar um skill custa mais, de cerca de 380 tokens para o xctrace a cerca de 21.700 para o audit-xcode-security-settings. A estimativa exclui os schemas das ferramentas do servidor MCP.2

O que roda no meu Mac depois que eu o instalo?

A julgar pela documentação e pelo diretório: o comando aceito, na instalação e, normalmente, uma vez por sessão em segundo plano enquanto o plugin estiver ativado, e o processo do servidor xcrun mcpbridge quando uma sessão se conecta a ele. O diretório não tem hooks.25 Todo o resto é uma chamada a uma das ferramentas do bridge, que as suas regras de permissão cobrem, ou texto de skill, que, segundo a página de segurança, entra no contexto do Claude como instruções e molda o que o Claude faz com as ferramentas que já tem.7 O único script Python, no audit-xcode-security-settings, só roda se um agent o executar, e isso é uma chamada de ferramenta que as suas regras de permissão também cobrem.

De qual Xcode eu preciso?

O xcrun agent plugin respondeu nos três builds do meu Mac: o release candidate do 27.1 (27A9275), um beta do 27.2 (27B5019j) e o 27.2 (27B52). Não testei um Xcode anterior, e nenhuma das notas de versão do Xcode 27, da Apple, menciona o comando.211

O que eu medi

Um único Mac, 10 e 11 de novembro de 2026. Trate os números como observações de um único desenvolvedor, não como documentação da Apple nem da Anthropic.2

  • Mac e ferramentas: macOS 27.0 (26A428), Xcode 27.2 (27B52) selecionado, Claude Code 2.1.322. O modo MCP headless do Xcode estava ativado.
  • Catálogo: anthropics/claude-plugins-official no commit 43fd1f9, o head nos dois dias.
  • Lido sem uma sessão: o diretório que xcrun agent plugin path --plugin-format claude imprime, claude --plugin-dir <dir> plugin details, claude plugin validate e uma contagem de arquivos por tipo.
  • Sessões: quatro sessões claude -p de um único prompt em um projeto vazio, nenhuma salva. Três carregaram o plugin com --plugin-dir. Uma tinha apenas o meu bridge adicionado manualmente e pediu à busca de ferramentas do Claude Code as ferramentas do bridge. Nenhuma sessão chamou uma ferramenta do bridge.
  • Instalação: recusada por design em um shell sem terminal. Nunca aceitei o comando.
  • Descrições das ferramentas: os 54 schemas de ferramentas como uma sessão interativa do Claude Code os carregou a partir do meu bridge adicionado manualmente, por meio da busca de ferramentas. A sessão não chamou nenhuma ferramenta.
  • Verificações de ausência: os feeds de notícias para desenvolvedores, de lançamentos e do newsroom da Apple, a página do Xcode da Apple, a página de notícias da Anthropic e o blog do Claude, obtidos em 11 de novembro e pesquisados em busca do plugin.
  • Não verificado: o prompt interativo e o painel de detalhes; qualquer coisa depois de uma instalação pelo marketplace, incluindo a execução em segundo plano, a recarga depois de uma atualização do Xcode e a string de versão; o servidor do próprio plugin rodando sem nenhuma entrada adicionada manualmente; o que o Xcode pergunta quando o bridge do plugin é o primeiro agent que ele vê; qualquer Xcode que não o 27B52 nas medições de sessão; um Mac com o modo headless desativado.

Os skills em si, a segunda saída do Xcode (xcrun agent skills export) e o travamento que encontrei no Xcode 27.2 estão em Xcode 27 traz Agent Skills que você pode exportar para qualquer lugar. Dois servidores MCP transformaram o Claude Code em um sistema de build para iOS cobre o bridge adicionado manualmente, e Servidores MCP são a nova superfície de ataque explica por que a lista de ferramentas de um servidor merece uma leitura. A configuração como um todo está no guia de desenvolvimento de agentes para iOS.

Referências


  1. Anthropic, anthropics/claude-plugins-official, .claude-plugin/marketplace.json no commit 43fd1f9, lido em 10 de novembro de 2026 e de novo em 11 de novembro, quando esse commit ainda era o head. Fonte da entrada xcode e das contagens: 317 plugins, dos quais 163 têm uma origem url e 99 uma origem git-subdir, todos com um campo sha, 54 são caminhos dentro do repositório, e um é uma origem command. A pull request #6338 adicionou a entrada: aberta em 30 de setembro de 2026, mesclada em 6 de novembro de 2026 às 00:55 UTC, 15 linhas em um único arquivo, com uma descrição dizendo que ela leva a mudança da #6259 para um branch dentro do repositório para que as verificações dele possam rodar, e um comentário de 9 de novembro perguntando o que a listagem acrescenta em relação ao servidor MCP do Xcode que já existia. Pull request #6259, “Add Xcode plugin (xcode)”: aberta em 18 de setembro de 2026 às 23:12 UTC, uma resposta automática dizendo que o repositório só aceita contribuições de membros da equipe da Anthropic, uma revisão de aprovação às 23:31 UTC, fechada como duplicata em 6 de novembro de 2026 às 00:58 UTC. ↩↩↩↩↩↩↩↩↩↩↩

  2. Medições e verificações do autor, 10 e 11 de novembro de 2026, na máquina e nas versões listadas em “O que eu medi”. Fontes: a saída de xcrun agent plugin path, claude plugin install (com e sem --json), claude --plugin-dir <dir> plugin details, claude plugin validate, claude --help e xcrun mcp-server status; o conteúdo do diretório do plugin, incluindo o cabeçalho de cada skill e uma busca, em todos os arquivos de skill, pelos 54 nomes de ferramentas do bridge; o evento de abertura e o log de depuração de quatro sessões do Claude Code de um único prompt; as 54 descrições de ferramentas do bridge como uma sessão interativa as recebeu; um SHA-256 da string do comando; e cópias salvas das páginas citadas em “Verificações de ausência”. As contagens são contagens de arquivos, de pastas e de nomes de ferramentas a partir dessas fontes. Os números de tokens são estimativas do Claude Code. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  3. Anthropic, anthropics/claude-plugins-official, pull request #7015, “ci(validate-plugins): re-pin validator and allow the xcode command source”, aberta e mesclada em 6 de novembro de 2026 (00:49 e 00:53 UTC). Fonte das três falhas do validador na entrada do Xcode, da configuração command-exempt: "xcode" e do comentário do workflow que chama cada nome isento de “listing decision”, que exige a aprovação da equipe de operações do marketplace. ↩↩↩↩

  4. Anthropic, documentação do Claude Code, Marketplace reference, seções “command plugin source” e “Copy mode and link mode”, obtida em 11 de novembro de 2026. Fonte de quando usar uma origem command e do exemplo da IDE, do contrato de saída de uma linha, do timeout padrão de 60 segundos, das condições em que uma instalação ou atualização falha, de que o modo link carrega o diretório no lugar em que ele está, com uma versão derivada do caminho e das entradas de nível superior, e da configuração disableCommandPluginSources. ↩↩↩↩↩↩↩↩

  5. Anthropic, documentação do Claude Code, Plugin loading reference e Host and maintain a marketplace, obtidas em 11 de novembro de 2026. Fonte de quando uma origem command roda de novo (a cada instalação ou atualização, e uma vez por sessão em segundo plano), da recarga quando a saída dela muda, da diferença entre o nome de entrada de um plugin e o nome no manifesto, e da regra de que o Claude Code executa apenas o comando exato que um usuário aceitou. ↩↩↩↩↩↩

  6. Anthropic, documentação do Claude Code, Plugin commands reference, obtida em 11 de novembro de 2026: o prompt Run this command now? [y/N], o -y sendo ignorado dentro de uma sessão do Claude Code, a recusa quando não há terminal conectado, e --accept-command <sha256> com o objeto shownCommand. Versões e datas do changelog do Claude Code: origens command na 2.1.229 (12 de agosto de 2026) e --accept-command na 2.1.271 (14 de setembro de 2026). O que cada escopo de instalação cobre vem de Install and manage plugins, obtida no mesmo dia. ↩↩↩↩↩↩↩↩↩↩↩

  7. Anthropic, documentação do Claude Code, Plugin security and trust, obtida em 11 de novembro de 2026. Fonte do que um plugin pode executar por conta própria, de que as regras de permissão cobrem as chamadas de ferramenta do Claude e não os processos do próprio plugin, de que os servidores MCP rodam fora do sandbox, e das etapas de revisão, incluindo claude --plugin-dir <plugin directory> plugin details <plugin name>. ↩↩↩↩↩↩

  8. Anthropic, documentação do Claude Code, Connect Claude Code to tools via MCP, seção “Scope hierarchy and precedence”, e Add components to a plugin, obtidas em 11 de novembro de 2026. Fonte da ordem de precedência, de que os plugins são comparados como duplicatas pelo endpoint, e dos nomes do servidor e das ferramentas de um plugin. ↩↩↩↩↩

  9. Anthropic, documentação do Claude Code, Extend Claude with skills, obtida em 11 de novembro de 2026. Fonte de que user-invocable: false esconde um skill do menu / enquanto o Claude ainda pode invocá-lo, e de que os skills de plugins recebem um namespace no formato /plugin-name:skill-name. ↩↩↩

  10. Apple, Giving external agents access to Xcode, obtida em 11 de novembro de 2026 e inalterada em relação à minha cópia de 10 de novembro. Fonte da configuração “Allow External Agents to Use Xcode Tools” e das suas três opções, do alerta quando um agent externo se conecta, e de claude mcp add --transport stdio xcode -- xcrun mcpbridge como a configuração documentada. A página não mencionava nenhum plugin nessa data. ↩↩↩

  11. Apple, Xcode 27 Release Notes, obtidas em 11 de novembro de 2026. Fonte da prévia de um servidor MCP que funciona sem um workspace do Xcode aberto, de sudo xcrun mcp-server enable e das concessões de permissão a agents com assinatura de código dentro de uma árvore de diretórios. Pesquisei nesta página e nas notas de versão do Xcode 27.1, do 27.2 e do beta do 27.3 por xcrun agent e não encontrei nenhuma ocorrência. ↩↩

  12. Anthropic, documentação do Claude Code, Publish and distribute a plugin, obtida em 11 de novembro de 2026. Fonte de que o marketplace oficial não aceita envios pelo portal do diretório de plugins. ↩

Artigos relacionados

Hooks para desenvolvimento Apple: padrões que salvam o projeto

Um agente iOS alcança chaves de assinatura, builds e arquivos de projeto. Hooks delimitam o raio de impacto: quatro padr…

14 min de leitura

Code with Claude SF 2026: O que a Anthropic realmente lançou

Code with Claude SF 2026: limites de uso do Claude Code dobrados, parceria SpaceX Colossus 1, 10 templates de agentes fi…

12 min de leitura