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 definições de comandos​

Num chat, abra 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 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 controlos de versão (--version, -v ou -V de node, npm, npx, python, pip e aischool-python). Eles não fazem mais do que as ferramentas de ficheiros integradas já fazem sem pedir. Correm na sandbox sem rede e apenas com caminhos dentro da pasta de trabalho, mesmo após seguir ligações (sem caminhos absolutos, ~ ou ..). Se uma ligação apontar para fora da pasta, aparece um cartão. Para isso, é necessária uma sandbox (macOS) 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 aparece, em tamanho 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 corre 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 próximos comandos iniciem sem cartão. Comandos que precisam de rede ainda pedem uma vez, a menos que instalações de pacotes estejam permitidas.
  • O primeiro cartão numa pasta que corre 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 corram 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, cada cartão informa se é o seu administrador ou a política de gestão deste computador que o faz.

Guardar comandos confiáveis​

Num comando, escolha Permitir sempre nesta pasta e depois Exatamente este comando ou Tudo o que comece 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.

Sandbox e rede​

  • Usar sandbox: os comandos só podem escrever nesta pasta. Esta opção vem ativada por predefinição no macOS.
  • Permitir rede: determina se os comandos têm internet. Esta opção vem desativada por predefinição. 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, o cartão de comando pergunta se quer executar exatamente esse comando com rede. Assim, não precisa ativar a rede para toda a pasta.

Windows

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

Instalar pacotes​

A app traz o seu próprio Node.js com npm. 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 por si, a app usa essa versão. Exceção: um projeto que inicia o próprio Electron (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 um nome iniciam então 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). Eles correm 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 se o seu administrador permitir execução automática. Caso contrário, não o pode ativar.

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 prontos a usar.

Servidores locais e o navegador integrado​

O assistente também pode iniciar um servidor de desenvolvimento que fica em execução, como npm run dev para um pequeno projeto React com Vite. 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 "Permanece em execução como servidor local até o parar."

O servidor continua em execução 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 em execução no máximo 4 servidores ao mesmo tempo. Os servidores param quando os parar ou quando fechar 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 etapa 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ços 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 numa ligação localhost numa resposta, ela abre no navegador integrado. Outras ligações abrem no seu navegador predefinido.
  • Também pode escrever manualmente qualquer endereço web.
  • O navegador tem uma sessão própria e separada: aí não tem sessão iniciada na AI-Corporate, os websites não recebem permissões como câmara ou microfone e não é possível descarregar.
  • Enquanto um menu ou caixa de diálogo da app estiver aberto, a página fica temporariamente escondida.

Exemplo:

Crie nesta pasta uma pequena app React com Vite com um contador. Instale as dependências, inicie o servidor de desenvolvimento e mostre o resultado no navegador.

Deixar o assistente observar​

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

  • O assistente vê uma página neste computador (localhost ou 127.0.0.1) sem perguntar.
  • Em qualquer outro website, por exemplo uma página em que 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 pergunta sempre de novo.
  • Se, depois da sua autorizaçã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 conta própria, para testar o que criou. Noutros websites, não clica, não escreve nem navega. Não recebe cookies nem palavras-passe.
  • No modo offline, o assistente só observa páginas neste computador.

Versões e GitHub​

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

  • Ações nesta pasta, como guardar uma versão, iniciam sem pedir. Ficheiros que parecem segredos (como ficheiros .env, chaves ou tokens no código, incluindo chaves de API do Google que começam por AIza) nunca entram numa versão. O assistente informa quando omite algo.
  • Ações online (descarregar um projeto, obter a versão mais recente, colocar online 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 se tornar público, o cartão avisa. Ao colocar online, o cartão mostra que ficheiros 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 colocar um projeto online, leia em Programar com vibe.

Modo offline

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

Definições para administradores​

Os administradores podem desativar comandos locais ou a execução automática para todos no ambiente. Fazem isso na consola de administração em Funcionalidades (ao nível do ambiente), no cartão App desktop:

  • Permitir comandos locais: se 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 estiver desativado, cada comando pede permissão e não pode ativar Permitir instalações de pacotes sem perguntar.
  • Permitir Python da app para ficheiros do 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.