Ir para o conteúdo principal

Executar comandos locais com segurança

Na aplicação desktop, o assistente pode executar comandos e testes na pasta de trabalho do seu chat. Como isso funciona no chat, leia em Acesso local a ficheiros. Nesta página, define quando isso pode acontecer sem pedir e quão isolados os comandos são executados.

Abrir as definições de comandos​

Abra no chat o painel Comandos e escolha Definições de comandos para esta pasta. As definições aplicam-se por pasta.

Quando pode o assistente executar um comando?​

Escolha um destes três modos:

  • Perguntar sempre: você aprova cada comando.
  • Comandos confiáveis automaticamente: comandos que você guardou iniciam sem pedir. Outros comandos continuam a pedir permissão.
  • Automaticamente na sandbox: tudo inicia sem pedir, mas num ambiente isolado.

Em cada modo, também se aplicam estas regras:

  • Comandos inofensivos iniciam sem cartão: mkdir, ls, cat, head, tail, wc, grep, find (sem -exec ou -delete), touch, pwd, tree e verificações de versão (--version, -v ou -V de node, npm, npx, python, pip e aischool-python). Não fazem mais do que as ferramentas de ficheiros integradas já fazem sem pedir. Executam-se na sandbox sem rede e apenas com caminhos dentro da pasta de trabalho, mesmo após seguir links (sem caminhos absolutos, ~ ou ..). Se um link apontar para fora da pasta, então aparece um cartão. Para isso, é necessária uma sandbox (macOS e Linux) e comandos locais, mas não Permitir execução automática do seu administrador. No painel Comandos aparece então Automático (comando inofensivo). Também uma lista entre chavetas, como mkdir -p src/{components,utils}, inicia sem cartão: a app converte-a em caminhos separados e verifica-os todos.
  • Cada cartão mostra o comando exato e, em ações online, o endereço exato. Abaixo disso aparece, em texto menor, a explicação do assistente.
  • Se a sandbox estiver disponível e o seu administrador permitir execução automática, então um cartão para um comando que seja executado na sandbox também tem o botão Da próxima vez automaticamente na sandbox nesta pasta. Isso coloca a pasta em Automaticamente na sandbox, para que os comandos seguintes iniciem sem cartão. Comandos que precisem de rede pedem uma vez mais, a menos que as instalações de pacotes sejam permitidas.
  • O primeiro cartão numa pasta que é executada na sandbox e não pede rede mostra uma vez Confiar neste projeto. Isso executa o comando, coloca a pasta em Automaticamente na sandbox e ativa Permitir instalações de pacotes sem perguntar. Depois disso, testes e builds como npm test, npm run build e node --test iniciam sem cartão, na sandbox sem rede. Comandos que ainda precisem de rede ou que sejam executados fora da sandbox continuam a pedir. Após Executar ou Recusar, a pergunta não volta nesta pasta; o modo é alterado nas definições de comandos. Se a execução automática estiver desativada, então cada cartão indica se o seu administrador ou a política de gestão deste computador o faz.

Guardar comandos confiáveis​

Escolha num comando Permitir sempre nesta pasta e depois Exatamente este comando ou Tudo o que começar por isto. Os comandos guardados passam a iniciar sem perguntas. Comandos com caracteres especiais (como ; | > $) pedem sempre permissão.

As regras guardadas estão nas definições de comandos em Sempre permitido nesta pasta. Aí também as pode remover novamente.

Sandbox e rede​

  • Usar sandbox: os comandos só podem escrever nesta pasta. Esta opção vem ativada por defeito no macOS e Linux.
  • Permitir rede: determina se os comandos têm acesso à internet. Esta opção vem desativada por defeito. Sem sandbox, os comandos têm sempre acesso à rede.

Cada cartão de comando mostra se a sandbox e a rede estão ativadas.

Se Permitir rede estiver desativado e o assistente quiser descarregar algo, por exemplo com npm install, então o cartão de comando pergunta se quer executar exatamente esse comando com rede. Portanto, não precisa ativar a rede para a pasta inteira.

Windows

No Windows, ainda não há sandbox disponível.

Instalar pacotes​

A app tem o seu próprio Node.js com npm incluído. Comandos como node, npm e npx funcionam assim mesmo que o Node.js não esteja instalado no seu computador. Se tiver instalado o Node.js você mesmo, a app usa essa versão. Exceção: um projeto que inicie o Electron diretamente (electron .) precisa de um Node.js que tenha sido instalado por si.

Permitir instalações de pacotes sem perguntar​

Em Definições de comandos para esta pasta, ative o interruptor Permitir instalações de pacotes sem perguntar. Instalações de pacotes com nome passam então a iniciar sem cartão: npm install <nome> e npm install a partir de package.json, pnpm, yarn ou bun com install ou add, e pip install <nome> (também via uv). Executam-se sempre na sandbox, com rede. Outros comandos seguem o modo que escolheu para a pasta.

Estas instalações ainda mostram um cartão:

  • iniciadores de projetos como npm create vite@latest e npx create-…, porque executam o seu próprio código;
  • pip install ., pip install -r requirements.txt, instalações de outro registo (--registry, -i, --index-url) e pacotes de um endereço git, URL ou caminho.

O interruptor só funciona com uma sandbox (macOS e Linux) e se o seu administrador permitir execução automática. Caso contrário, não pode ativá-lo.

Sem scripts de instalação

Os pacotes instalados desta forma nunca executam os seus próprios scripts de instalação (o npm corre com --ignore-scripts). Os pacotes Python são instalados apenas como wheels prontas a usar.

Servidores locais e o navegador integrado​

O assistente também pode iniciar um servidor de desenvolvimento que fica a correr, como npm run dev para um pequeno projeto React com Vite. Para isso aplicam-se as mesmas regras que para outros comandos: você aprova o comando exato, ou ele inicia através de uma regra guardada ou automaticamente na sandbox. Em vez do tempo máximo de execução, o cartão mostra: "Fica a correr como servidor local até o parar."

O servidor continua a correr depois de o assistente responder. No painel Comandos, o cartão mostra o estado Servidor em execução, com os botões Abrir no navegador e Parar. Podem estar a correr no máximo 4 servidores em simultâneo. Os servidores param quando os interrompe ou quando fecha a app.

Na sandbox sem rede, um servidor só pode escutar neste computador (localhost). Como o assistente instala pacotes, leia em Instalar pacotes.

Mostrar uma página web simples​

Para uma página web normal (um index.html com CSS e JavaScript, sem passo de build), não é necessário nenhum comando. O assistente usa então o servidor web integrado da app:

  • A pasta só é visível neste computador, em http://127.0.0.1 com uma porta aleatória.
  • Ficheiros ocultos, como .git e .env, nunca são mostrados.
  • Se um ficheiro mudar, a página recarrega automaticamente.

Para isto não aparece nenhum cartão de aprovação. O servidor aparece no painel Comandos, com Abrir no navegador e Parar, e conta para o máximo de 4 servidores.

Veja o resultado no navegador integrado: o botão Navegador (o ícone do globo) à direita na barra superior. O painel abre ao lado do chat, com voltar, avançar, recarregar (parar durante o carregamento), uma barra de endereço e Abrir no seu navegador predefinido.

  • O assistente abre o navegador por si para mostrar o resultado de um servidor local. Isso só pode ser feito com endereços locais, como http://localhost:5173.
  • Se clicar num link localhost numa resposta, ele abre no navegador integrado. Outros links abrem no seu navegador predefinido.
  • Também pode escrever qualquer endereço web.
  • O navegador tem uma sessão própria e separada: aí não tem sessão iniciada na AI-Public, os websites não recebem permissões como câmara ou microfone e não é possível transferir ficheiros.
  • Enquanto um menu ou uma janela de diálogo da app estiver aberto, a página fica temporariamente oculta.

Exemplo:

Cria nesta pasta uma pequena app React com Vite com um contador. Instala as dependências, inicia o servidor de desenvolvimento e mostra o resultado no navegador.

Deixar o assistente observar​

Se pedir ao assistente para olhar para a página no navegador integrado, ele lê o endereço, o título, o texto visível, uma captura de ecrã e as últimas mensagens de erro da página. Isso é enviado para o modelo de IA.

  • Uma página neste computador (localhost ou 127.0.0.1) é observada pelo assistente sem pedir.
  • Em qualquer outro website, por exemplo uma página onde tem sessão iniciada, o assistente mostra primeiro um cartão: "O assistente quer observar onedrive.live.com." Clique em Permitir observação ou em Recusar. Ele pede isso de novo sempre.
  • Se, depois da sua permissão, a página mudar para outro website, o assistente não lê nada.
  • Só numa página neste computador o assistente clica e escreve por si, para testar o que criou. Em outros websites, não clica, não escreve e não navega. Não obtém cookies nem palavras-passe.
  • No modo offline, o assistente observa apenas páginas neste computador.

Versões e GitHub​

O assistente tem um git integrado. Portanto, não precisa de instalar o git, nem no Windows. O assistente pode guardar versões, mostrar o que mudou, criar branches e publicar um projeto online.

  • As ações nesta pasta, como guardar uma versão, iniciam sem perguntar. Ficheiros que pareçam segredos (como ficheiros .env, chaves ou tokens no código, incluindo chaves Google API que começam por AIza) nunca entram numa versão. O assistente avisa se saltar algo.
  • As ações online (descarregar um projeto, obter a versão mais recente, publicar e criar um repositório GitHub) mostram primeiro um cartão com o endereço exato e os rótulos Integrado na app e Rede ativada. Se o endereço não for github.com ou se um novo repositório for tornado público, o cartão avisa. Ao publicar, o cartão mostra quais os ficheiros que serão enviados. Escolha Executar ou Recusar.
  • Ligar um repositório fora de github.com também pede primeiro permissão.

Como ligar o GitHub e publicar um projeto, leia em Programar com vibe.

Modo offline

No modo offline, os comandos são sempre executados na sandbox sem rede. Instalações de pacotes com rede e as ações online do git integrado (descarregar, obter, publicar e GitHub) não funcionam. Guardar versões e mostrar uma página web simples continuam a funcionar.

Definições para administradores​

Os administradores podem desativar comandos locais ou execução automática para todos no ambiente. Fazem-no no ambiente de gestão em Funcionalidades (ao nível do ambiente), no cartão App Desktop:

  • Permitir comandos locais: se isto estiver desativado, o assistente não pode executar comandos. As ações online do git integrado também deixam de funcionar. Guardar versões e branches continuam a funcionar: apenas alteram ficheiros na pasta, tal como as ferramentas de ficheiros.
  • Permitir execução automática: se isto estiver desativado, cada comando pede permissão e não pode ativar Permitir instalações de pacotes sem perguntar.
  • Permitir o Python da app para ficheiros Office: para modelos, gráficos e análises. Este Python funciona sem internet, escreve apenas na pasta de trabalho e não pode iniciar outros programas. Se nada estiver definido, segue Permitir comandos locais. Sem sandbox (Windows), só existe se os comandos locais estiverem ativados e pede sempre permissão.