Ferramenta Terminal
Execute comandos shell no sistema host. Os comandos são executados via sh -c.
Parâmetros
| Key | Type | Default | Description |
|---|---|---|---|
command | string | — | O comando shell a ser executado |
action | string | "run" | Ação: run, check, kill ou trust_all |
pid | integer | — | PID necessário para check/kill |
Lógica de Aprovação
Um comando é auto-aprovado apenas se ambas as condições forem atendidas:
- O comando começa com um prefixo em
terminal.allowed_prefixes - O comando não contém nenhum operador de shell
Operadores de Shell (sempre requerem aprovação)
text
; | && || $() ` (backticks)Prefixos Permitidos Padrão
text
ls, cat, head, tail, echo, date, whoami, pwd, find, wc,
grep, tree, file, stat, uname, df, du, ps, which, env, printenvSaída
Retorna stdout primeiro, depois stderr (se houver). A saída é truncada em terminal.max_output_chars (padrão 4000 caracteres).
Comandos em Segundo Plano (Novo)
Se um comando passar do timeout inicial, ele vai para segundo plano e retorna um PID.
- Use
action="check"+pidpara ver progresso/saída - Use
action="kill"+pidpara interromper - A saída final recente fica armazenada por um período curto para consultas posteriores
Bloqueios de Segurança Rígidos (Novo)
Padrões destrutivos amplos agora são bloqueados antes do fluxo de aprovação, incluindo rm -rf e find ... -delete em caminhos sensíveis.
Configuração
config.toml
[terminal]
allowed_prefixes = ["ls", "cat", "head", "tail", "echo", "date"]
initial_timeout_secs = 30
max_output_chars = 4000
permission_mode = "default"Allow Always (Persistente)
Quando o usuário clica em "Allow Always" no Telegram:
- A primeira palavra do comando é extraída como o prefixo
- O prefixo é adicionado à lista de permitidos na memória
- O prefixo é persistido no SQLite (tabela
terminal_allowed_prefixes) - Na reinicialização, os prefixos persistidos são mesclados com os prefixos da configuração
Isso significa que as aprovações "Allow Always" sobrevivem a reinicializações do daemon sem modificar o config.toml.
Sessões Não Confiáveis
Sessões originadas de gatilhos (e-mail, etc.) são marcadas como não confiáveis. Todos os comandos em sessões não confiáveis requerem aprovação, independentemente da lista de permissões.