Permissões do agente MCP
O que pode fazer um agente MCP: permissões do seu humano, alcance por projeto e VPS, só leitura e operações sempre proibidas.
- Categoria: Inteligência artificial e agentes
- Estado: Disponível
- Requisitos: Uma conta ArduMaker que autoriza o agente; Um agente ligado ao servidor MCP (ver Servidor MCP)
- Ferramentas MCP (Só leem):
ver_contexto_inicial
O que permite fazer?
- Limitar um agente a certos projetos e, em separado, a certos VPS.
- Deixar um agente em só leitura: não vê nem pode chamar ferramentas que modificam dados.
- Mudar o alcance ou o modo a partir de
/mesem voltar a ligar o agente, com efeito na sua próxima chamada. - Revogar um agente ou todos de uma vez, no momento.
- Saber antecipadamente o que o agente pode editar ou apagar em um projeto, e porque não.
Quando convém usar?
- Ao ligar um agente novo: começar com o alcance mínimo e em só leitura se só tiver de diagnosticar.
- Quando um agente vai trabalhar sobre um único VPS ou um único projeto.
- Se se suspeitar que uma credencial foi divulgada: revogar.
Como funciona na ArduMaker?
Uma permissão de um agente é a soma de três camadas. As três terminam em “não”, mas o motivo é diferente e a resposta di-lo:
| Camada | O que decide | Motivo devolvido |
|---|---|---|
| A pessoa que autorizou | O agente age como essa pessoa: papel na empresa, em cada projeto e acesso a cada VPS (incluindo as listas de membros permitidos e excluídos do VPS) | the human who authorized this agent is not an admin of this project |
| A sessão | O alcance escolhido ao aprovar: projetos, VPS e só leitura | this agent was authorized with read-only scope |
| As regras do MCP | Operações que nenhum agente pode fazer, tenha o alcance que tiver | no MCP agent can ever do this, whatever its scope |
Alcance
- Ao aprovar escolhe-se “todos os projetos” ou uma lista, e em separado “todos os VPS” ou uma lista. Cada id é validado contra o que a pessoa pode ver: não é possível dar a um agente mais acesso que o próprio.
- O alcance não fica congelado no token: é resolvido em tempo real em cada chamada. Reduzi-lo a partir de
/mevale na chamada seguinte. - Um alcance restrito sem nenhum id não é aceito: para deixar um agente sem acesso, revoga-se.
Só leitura
- A lista de ferramentas só inclui as que declaram que só leem.
- Se mesmo assim chamar uma que escreve, a chamada é rejeitada com
sin_permisoereintentable: false, e fica registrada como rejeição. - A mesma regra vale para o que o agente possa tocar pela API REST (terminais, Docker): um agente só de leitura não modifica um VPS por nenhum caminho.
- Ao tirar o só leitura, as ferramentas de escrita funcionam logo; um cliente que já tinha a lista carregada pode precisar de a recarregar.
O que nenhum agente pode fazer
- Apagar um projeto completo.
- Acrescentar ou retirar membros de um projeto, ou mudar o seu papel.
- Criar, editar ou apagar um anexo marcado como secreto (lê-lo sim, se a pessoa puder).
- Apagar um VPS completo.
- Criar, editar ou apagar papéis de um projeto, ou mudar quem tem que permissões.
- Criar, editar ou assinar as políticas de um projeto.
- Ler ou tocar nas finanças de um projeto: orçamentos, pagamentos de clientes, o que recebe cada colaborador e os seus comprovativos.
- Enviar mensagens de WhatsApp para números reais (só o sandbox).
O que muda realmente?
- A link guarda o alcance (
alcance_todos,proyectos_permitidos,alcance_todos_vps,vps_permitidos) esolo_lectura. - Revogar marca a link como revogada e corta também a cadeia de refresh tokens: o agente perde acesso no momento e não se pode renovar.
- Fechar todas as sessões revoga todos os agentes da pessoa.
Proteções e ferramentas restritas
Algumas operações são permitidas mas pedem uma confirmação no argumento, para que fique claro o que se destrói:
| Operação | Proteção |
|---|---|
| Registro DNS crítico (MX, NS, A/AAAA no apex) | confirmado=true; sem ele, 409 |
| Apagar um usuário Linux | confirmacion com o nome exato; nunca root |
Comando com forma destrutiva (rm -rf, mkfs, shutdown, DROP DATABASE…) | 409 com o que coincidiu; reenviar com confirmado=true. É uma proteção contra acidentes, não uma fronteira de segurança |
userdel ou deluser pela shell | Sempre rejeitado: o caminho é eliminar_usuario_vps |
| Apagar um serviço systemd crítico | Nomes protegidos (ssh, nginx, docker, mysql, postgresql…) |
Há ainda ferramentas só para administradores do sistema (caixa interna de bugs e pedidos de escolas). Só aparecem se quem autorizou for admin do sistema, e isso é consultado em tempo real em cada chamada: se lhe tirarem o papel, o seu agente perde-o no momento.
Esquema
- Existe por MCP?: se não:
nunca permitido - A sessão é só de leitura?: se escreve: rejeição
- Está no alcance?: projeto e VPS permitidos
- A pessoa pode?: papel de empresa, projeto e VPS
- Pede confirmação?:
confirmado/confirmacion
Resultado esperado
ver_contexto_inicialdevolve o alcance (solo_lectura,todos_los_proyectos,todos_los_vps) enunca_permitido.- Ao ver um projeto ou uma tarefa, a resposta inclui um bloco de permissões com
editar,borrare, se algo estiver emfalse, omotivo. - Em
/mecada link mostra o seu alcance, se está ativa e se foi detetada reutilização de um token (reuse_detected_at).
Erros e resolução
| Resposta | Causa | O que fazer |
|---|---|---|
sin_permiso por só leitura | A sessão não escreve | Avisar a pessoa: tira-o em /me; repetir não serve |
sin_permiso (403) | A pessoa não tem essa permissão, ou o recurso está fora do alcance | Pedir a permissão ou alargar o alcance |
sin_permiso (430) | Ferramenta de admin do sistema e quem autorizou não o é | Não há caminho |
conflicto (409) | Falta a confirmação de uma proteção | Rever e reenviar com a confirmação |
PATCH 400 em /me | Campo desconhecido, tipo inválido ou alcance restrito sem ids | Corrigir o pedido |
PATCH 409 em /me | A link está revogada | Voltar a autorizar |
Relação com MCP
O alcance decide-se no tela de autorização e edita-se em /me (agentes ligados); não há ferramentas MCP para mudar as próprias permissões. A partir do agente, ver_contexto_inicial é a forma de as conhecer antes de planear. Mais detalhe em /mcp/docs.