
O Semaphore UI 2.21 executa agentes de IA para programação. Duas novas aplicações, Claude Code Agent e Codex Agent, iniciam a ferramenta de linha de comando do agente em um repositório e passam a ela um prompt. O agente trabalha por conta própria e relata o que faz no log da tarefa. O prompt pode receber valores dos grupos de variáveis e das variáveis de survey, o agente pode chamar as ferramentas de servidores MCP, e o log mostra o trabalho dele como uma transcrição.
O Semaphore 2.21 está em desenvolvimento. Ele ainda não foi lançado: esta página descreve o que já está no branch de desenvolvimento e vai crescer até o lançamento. Os detalhes ainda podem mudar.
Destaques
- Modelos Claude Code Agent e Codex Agent: um agente é um modelo como qualquer outro. Inicie-o manualmente, por um agendamento, por uma integração ou como uma etapa de um workflow.
- Expressões no prompt:
${{ vars.extra.NAME }},${{ vars.env.NAME }},${{ secrets.extra.NAME }}e${{ secrets.env.NAME }}inserem no prompt os valores dos grupos de variáveis e das variáveis de survey, como no GitHub Actions. - Prompt de uma tarefa: um modelo pode permitir que quem inicia uma tarefa substitua o prompt em uma única execução.
- Inventário MCP: um novo tipo de inventário com os servidores MCP remotos cujas ferramentas o agente pode chamar. Os tokens são armazenados criptografados.
- Log da tarefa do agente: o texto do agente, as chamadas de ferramentas, os subagentes e um resumo com os tokens e o custo, atualizados enquanto o agente trabalha.
- Isolamento: cada tarefa recebe seu próprio diretório de configuração do agente, vazio. Os tokens e os segredos inseridos no prompt são mascarados no log.
Modelos de agentes de IA

Um modelo de agente inicia o Claude Code ou o Codex em um diretório de um repositório e passa a ele um prompt. Use-o para o trabalho que você descreveria a um colega: revisar o último commit, encontrar e corrigir um teste que falha, atualizar uma dependência e abrir um pull request.
Para criar um, acesse Modelos de tarefa, clique em Novo modelo e depois em Claude Code Agent ou Codex Agent.
| Campo | Descrição |
|---|---|
| Repositório | O repositório em que o agente trabalha. O Semaphore o clona ou atualiza antes da tarefa, como em qualquer outro modelo. |
| Caminho do subdiretório | Opcional. O diretório do repositório em que o agente é iniciado. |
| Servidores MCP | Opcional. Um inventário MCP com os servidores cujas ferramentas o agente pode chamar. |
| Grupos de variáveis | Variáveis e segredos para o agente: a chave de API, os valores para as expressões no prompt, as variáveis de ambiente do processo do agente. |
| Prompt | A instrução com a qual o agente é executado. |
| Argumentos da CLI | Argumentos adicionais para o comando do agente: o modelo, os limites, as permissões. |
| Variáveis de survey | Perguntas feitas quando a tarefa é iniciada. As respostas podem ser inseridas no prompt. |
O que é necessário. A ferramenta de linha de comando do agente deve estar instalada na máquina que executa as tarefas, o servidor do Semaphore ou o runner:
| Aplicação | Comando | Instalação |
|---|---|---|
| Claude Code Agent | claude |
npm install -g @anthropic-ai/claude-code |
| Codex Agent | codex |
npm install -g @openai/codex |
O Semaphore habilita uma aplicação quando encontra o comando dela no PATH na inicialização. Um
administrador também pode habilitá-la e definir o caminho do executável na página Aplicações.
Como o agente é executado. O Semaphore inicia o agente no diretório do repositório com o prompt na entrada padrão, de modo que o prompt não aparece na lista de processos:
| Aplicação | Comando |
|---|---|
| Claude Code Agent | claude -p --output-format=stream-json --verbose --include-partial-messages --mcp-config=<file> --strict-mcp-config --no-session-persistence <CLI args> |
| Codex Agent | codex exec --json --skip-git-repo-check <CLI args> - |
- Nada é mantido entre as tarefas. Cada execução é uma nova sessão do agente. O que deve sobreviver a uma execução pertence ao repositório: um commit, um pull request, um arquivo.
- Em runners Docker e Kubernetes o agente é executado em um contêiner, portanto a imagem do
executor deve conter o comando
claudeoucodex.
Chave de API
O agente obtém sua chave de API de uma variável de ambiente. Adicione a chave a um grupo de variáveis do modelo como uma variável de ambiente secreta:
| Aplicação | Variável | Também aceita |
|---|---|---|
| Claude Code Agent | ANTHROPIC_API_KEY |
CLAUDE_CODE_OAUTH_TOKEN |
| Codex Agent | OPENAI_API_KEY |
CODEX_API_KEY |
O login do usuário que executa o Semaphore não é usado: o diretório de configuração do agente é criado para a tarefa e está vazio, portanto uma chave de um grupo de variáveis é a única forma de autenticação. Se nenhuma das variáveis estiver definida, o log da tarefa informa qual adicionar.
Expressões no prompt
O prompt de um modelo pode receber valores dos grupos de variáveis do modelo. Escreva uma expressão entre chaves duplas, como no GitHub Actions, e o Semaphore a substitui quando a tarefa é iniciada:
| Expressão | Valor |
|---|---|
${{ vars.extra.NAME }} |
Uma variável extra de um grupo de variáveis. |
${{ vars.env.NAME }} |
Uma variável de ambiente de um grupo de variáveis. |
${{ secrets.extra.NAME }} |
Uma variável extra secreta de um grupo de variáveis. |
${{ secrets.env.NAME }} |
Uma variável de ambiente secreta de um grupo de variáveis. |
Find the flaky tests in services/api and fix them.
Open a pull request against ${{ vars.extra.base_branch }} and post its link
to ${{ vars.env.TRACKER_URL }} with the token ${{ secrets.env.TRACKER_TOKEN }}.
- As variáveis de survey são variáveis extra: a resposta à variável de survey
versioné${{ vars.extra.version }}, e uma secreta é${{ secrets.extra.NAME }}. Uma variável de survey entregue como variável de ambiente fica emenv. Uma variável de survey deixada sem resposta resulta em uma string vazia. - Uma variável que não existe faz a tarefa falhar antes de o agente iniciar, com uma mensagem que indica a expressão. O Semaphore não executa um agente com uma lacuna no prompt.
- Uma expressão escrita incorretamente é recusada ao salvar o modelo:
${{ secrets.TOKEN }}não temextranemenv. - As outras expressões são deixadas como estão. Apenas
vars.…esecrets.…pertencem ao Semaphore, portanto um prompt pode pedir ao agente que escreva um workflow contendo${{ github.sha }}. Para manter uma expressãovarsousecretscomo texto, coloque mais um cifrão antes dela:$${{ secrets.env.NAME }}. - Um valor é inserido como está. Uma string é usada como foi escrita, uma lista ou um objeto como JSON. O valor não é examinado novamente em busca de expressões.
- Um segredo inserido no prompt é mascarado no log da tarefa, onde quer que o agente o repita.
Um segredo no prompt é enviado ao provedor do modelo junto com o restante do prompt. Prefira entregar um segredo às ferramentas do agente: como variável de ambiente secreta de um grupo de variáveis ou como token de um servidor MCP.
Prompt de uma tarefa
Com a caixa de seleção Prompt habilitada no modelo, o formulário da tarefa mostra o prompt do modelo e permite alterá-lo em uma única execução. Um agendamento, uma integração ou uma etapa de workflow podem manter um prompt próprio da mesma forma. Pela API, envie-o nos parâmetros da tarefa:
{
"template_id": 12,
"params": {
"prompt": "Review the changes of the last release and list the risky ones."
}
}
Um prompt fornecido por uma tarefa é usado exatamente como está escrito: as expressões no prompt são substituídas apenas no prompt armazenado no modelo. Isso mantém as variáveis e os segredos do projeto longe de quem só pode executar tarefas. Se o modelo não permitir, uma tarefa que traz um prompt é recusada.
Servidores MCP

Um agente pode chamar as ferramentas de servidores MCP remotos: um issue tracker, uma busca na documentação, um serviço próprio. Os servidores são mantidos em um inventário do novo tipo Inventário MCP, e um único inventário atende tanto aos modelos Claude Code quanto aos modelos Codex.
| Campo | Descrição |
|---|---|
| Interruptor | Um servidor desativado permanece na lista e não é entregue ao agente. |
| Nome | O nome pelo qual o agente conhece o servidor: até 64 letras, dígitos, - e _. |
| URL | Um endereço http ou https de um servidor que fala MCP sobre HTTP ou SSE. Um nome de usuário ou uma senha na URL não são aceitos. |
| Token | Opcional. O agente o envia no cabeçalho Authorization como bearer token. |
- Um token salvo é armazenado criptografado e nunca mais é exibido: digite um novo para substituí-lo, ou remova-o.
- O token chega ao agente como uma variável de ambiente do processo dele. Ele não é gravado no arquivo de configuração do agente, na linha de comando nem no log da tarefa.
- O agente recebe exatamente esses servidores. As ferramentas deles são aprovadas antecipadamente, já que não há ninguém para confirmar uma chamada, e os servidores MCP configurados para o usuário que executa o Semaphore não são usados.
Log da tarefa

O log da tarefa mostra o trabalho do agente à medida que acontece, como uma transcrição e não como os eventos JSON que a ferramenta de linha de comando imprime:
- O texto do agente, linha por linha. O Codex imprime uma mensagem quando ela está completa.
- As chamadas de ferramentas, cada uma em uma linha: o estado, o servidor MCP e a ferramenta, os argumentos. Clique em uma linha para ver os argumentos e o resultado. Uma chamada que falhou fica aberta desde o início.
- Os subagentes: as linhas de um subagente são marcadas com o nome dele.
- A primeira linha de uma execução do Claude Code indica o modelo e os servidores MCP, com os que não se conectaram em vermelho.
- O resumo ao final: o número de turnos, a duração, os tokens e o custo, na medida em que o agente os informa.
Log bruto mostra o mesmo log como texto simples.
Segurança
- Um agente executa comandos. Dentro das permissões que a ferramenta de linha de comando lhe concede, o agente pode ler e alterar o diretório do repositório, executar programas como o usuário que executa as tarefas e chamar as ferramentas dos seus servidores MCP. Dê a um modelo de agente um repositório e tokens com os direitos mais restritos que bastem para o trabalho, e um runner separado para o trabalho que você quer manter afastado do servidor.
- Cada tarefa tem seu próprio diretório de configuração do agente (
CLAUDE_CONFIG_DIR,CODEX_HOME), criado para a tarefa e removido depois dela. As configurações, os logins e os servidores MCP do usuário que executa o Semaphore não chegam ao agente, e uma variável de um grupo de variáveis não pode redirecionar o diretório. - O prompt e o que o agente lê vão para o provedor do modelo: os arquivos do repositório, a saída dos comandos, os resultados das ferramentas.
- Um repositório pode instruir o agente. O texto nos arquivos que o agente lê, em uma issue ou no resultado de uma ferramenta pode mudar o que o agente faz. Não aponte um agente com tokens poderosos para conteúdo que você não controla.
- Tokens e segredos são mascarados no log da tarefa: os tokens dos servidores MCP e os segredos
inseridos no prompt são substituídos por
********. - Variáveis e segredos ficam fora da linha de comando de um agente, onde a lista de processos os mostraria.
Documentação
O guia do usuário tem uma página com cada campo e cada regra: Agentes de IA.
