O BashBox é um interpretador Bash escrito totalmente em PHP, criado por Pushpak Chhajed, conhecido também pelo pacote Grant de papéis e permissões. A ferramenta permite que scripts Bash gerados por agentes de inteligência artificial sejam executados sem recorrer a chamadas de sistema como proc_open, exec ou shell_exec, oferecendo um ambiente totalmente controlado dentro da aplicação.
Cada comando do BashBox corresponde a uma classe PHP que opera sobre um sistema de arquivos virtual. O interpretador inclui 58 comandos padrão – como grep, sed, sort e find – além de built‑ins como cd, export e trap. O código pode ser alimentado com arquivos e variáveis de ambiente ao iniciar a instância, e a saída e o código de saída são retornados em objetos ExecResult. O parsing falha devolve o código 2, replicando o comportamento de erro de sintaxe do Bash.
O BashBox disponibiliza quatro backends de sistema de arquivos: InMemoryFs (não grava em disco), OverlayFs (leitura em diretório real com escrita em memória), ReadWriteFs (leitura/escrita em disco restrita a um diretório raiz) e MountableFs (monta diferentes backends em caminhos específicos). Todos os backends impõem cotas padrão de 64 MB e 10 000 entradas; ultrapassar a quota gera o erro No space left on device. Além disso, o sistema bloqueia travessias de caminho e injeções de byte nulo, e OverlayFs recusa links simbólicos por padrão.
Os limites de execução são configuráveis via a classe Limits, que oferece 18 parâmetros – contagem de comandos, iterações de loops, tamanho de here‑doc, profundidade da árvore de parsing, entre outros. Os valores padrão permitem até 10 000 comandos por script, 10 000 iterações por loop, 10 MB de saída e 1 MB de texto de script. Limites podem ser sobrescritos por chamada usando ExecOptions, exceto a cota de disco, que é fixa na criação da instância.
O acesso à rede está desativado por padrão; para habilitá‑lo, o desenvolvedor fornece um NetworkConfig indicando prefixos de URL permitidos, métodos HTTP aceitos, bloqueio de faixas privadas e tamanho máximo de resposta. A ferramenta também permite registrar comandos personalizados estendendo AbstractCommand. BashBox requer PHP 8.4 ou superior, não tem dependências externas via Composer e pode ser instalado com composer require shipfastlabs/bashbox. A licença é MIT e a versão mais recente, no momento da publicação, é v0.0.3. Mais detalhes e o código‑fonte estão disponíveis no repositório GitHub do projeto.
Fonte: Laravel News