
Semaphore UI 2.21 kører AI-kodeagenter. To nye apps, Claude Code Agent og Codex Agent, starter agentens kommandolinjeværktøj i et repository og giver det en prompt. Agenten arbejder på egen hånd og rapporterer, hvad den gør, til opgaveloggen. Prompten kan hente værdier fra variabelgrupper og survey-variabler, agenten kan kalde værktøjerne på MCP-servere, og loggen viser dens arbejde som en transskription.
Semaphore 2.21 er under udvikling. Den er ikke udgivet endnu: denne side beskriver det, der allerede findes i udviklingsgrenen, og vokser frem til udgivelsen. Detaljer kan stadig ændre sig.
Højdepunkter
- Claude Code Agent- og Codex Agent-skabeloner: en agent er en skabelon som enhver anden. Start den manuelt, via en tidsplan, en integration eller som et trin i et workflow.
- Prompt-udtryk:
${{ vars.extra.NAME }},${{ vars.env.NAME }},${{ secrets.extra.NAME }}og${{ secrets.env.NAME }}indsætter værdierne fra variabelgrupper og survey-variabler i prompten, som i GitHub Actions. - En opgaves prompt: en skabelon kan lade den, der starter en opgave, erstatte prompten for én kørsel.
- MCP-inventory: en ny inventory-type med de eksterne MCP-servere, hvis værktøjer agenten kan kalde. Tokens gemmes krypteret.
- Agentens opgavelog: agentens tekst, værktøjskald, underagenter og en opsummering med tokens og omkostninger, opdateret mens agenten arbejder.
- Isolation: hver opgave får sin egen, tomme konfigurationsmappe til agenten. Tokens og de hemmeligheder, der indsættes i prompten, maskeres i loggen.
AI-agentskabeloner

En agentskabelon starter Claude Code eller Codex i en mappe i et repository og giver den en prompt. Brug den til arbejde, du ellers ville beskrive for en kollega: gennemgå det seneste commit, find og ret en fejlende test, opdater en afhængighed og opret en pull request.
For at oprette en skal du gå til Opgaveskabeloner, klikke på Ny skabelon og derefter på Claude Code Agent eller Codex Agent.
| Felt | Beskrivelse |
|---|---|
| Repository | Det repository, agenten arbejder i. Semaphore kloner eller opdaterer det før opgaven, som for enhver anden skabelon. |
| Sti til undermappe | Valgfrit. Den mappe i repositoryet, som agenten startes i. |
| MCP-servere | Valgfrit. En MCP-inventory med de servere, hvis værktøjer agenten kan kalde. |
| Variabelgrupper | Variabler og hemmeligheder til agenten: API-nøglen, værdier til prompt-udtrykkene, miljøvariabler for agentens proces. |
| Prompt | Den instruktion, agenten kører med. |
| CLI-argumenter | Ekstra argumenter til agentens kommando: modellen, grænserne, rettighederne. |
| Survey-variabler | Spørgsmål, der stilles, når opgaven startes. Svarene kan indsættes i prompten. |
Det skal du bruge. Agentens kommandolinjeværktøj skal være installeret på den maskine, der udfører opgaver, dvs. Semaphore-serveren eller runneren:
| App | Kommando | Installation |
|---|---|---|
| Claude Code Agent | claude |
npm install -g @anthropic-ai/claude-code |
| Codex Agent | codex |
npm install -g @openai/codex |
Semaphore aktiverer en app, når den finder appens kommando i PATH ved opstart. En administrator
kan også aktivere den og angive stien til den eksekverbare fil på siden Apps.
Sådan kører agenten. Semaphore starter agenten i repository-mappen med prompten på standard input, så prompten ikke vises i proceslisten:
| App | Kommando |
|---|---|
| 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> - |
- Intet gemmes mellem opgaver. Hver kørsel er en ny session for agenten. Det, der skal overleve en kørsel, hører hjemme i repositoryet: et commit, en pull request, en fil.
- På Docker- og Kubernetes-runnere kører agenten i en container, så executor-imaget skal
indeholde kommandoen
claudeellercodex.
API-nøgle
Agenten henter sin API-nøgle fra en miljøvariabel. Tilføj nøglen til en af skabelonens variabelgrupper som en hemmelig miljøvariabel:
| App | Variabel | Accepteres også |
|---|---|---|
| Claude Code Agent | ANTHROPIC_API_KEY |
CLAUDE_CODE_OAUTH_TOKEN |
| Codex Agent | OPENAI_API_KEY |
CODEX_API_KEY |
Loginnet for den bruger, der kører Semaphore, bruges ikke: agentens konfigurationsmappe oprettes til opgaven og er tom, så en nøgle fra en variabelgruppe er den eneste måde at autentificere på. Hvis ingen af variablerne er sat, fortæller opgaveloggen, hvilken der skal tilføjes.
Prompt-udtryk
En skabelons prompt kan hente værdier fra skabelonens variabelgrupper. Skriv et udtryk i dobbelte krøllede parenteser, som i GitHub Actions, og Semaphore erstatter det, når opgaven starter:
| Udtryk | Værdi |
|---|---|
${{ vars.extra.NAME }} |
En ekstra variabel i en variabelgruppe. |
${{ vars.env.NAME }} |
En miljøvariabel i en variabelgruppe. |
${{ secrets.extra.NAME }} |
En hemmelig ekstra variabel i en variabelgruppe. |
${{ secrets.env.NAME }} |
En hemmelig miljøvariabel i en variabelgruppe. |
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 }}.
- Survey-variabler er ekstra variabler: svaret på survey-variablen
versioner${{ vars.extra.version }}, og en hemmelig er${{ secrets.extra.NAME }}. En survey-variabel, der leveres som en miljøvariabel, ligger i stedet underenv. En survey-variabel uden svar giver en tom streng. - En variabel, der ikke findes, får opgaven til at fejle, før agenten starter, med en meddelelse, der nævner udtrykket. Semaphore kører ikke en agent med et hul i prompten.
- Et forkert stavet udtryk afvises, når skabelonen gemmes:
${{ secrets.TOKEN }}har hverkenextraellerenv. - Andre udtryk efterlades, som de er. Kun
vars.…ogsecrets.…tilhører Semaphore, så en prompt kan bede agenten om at skrive et workflow med${{ github.sha }}i. For at bevare etvars- ellersecrets-udtryk som tekst skal du sætte endnu et dollartegn foran det:$${{ secrets.env.NAME }}. - En værdi indsættes, som den er. En streng bruges, som den er skrevet, en liste eller et objekt som JSON. En værdi gennemsøges ikke for udtryk igen.
- En hemmelighed, der er indsat i prompten, maskeres i opgaveloggen, uanset hvor agenten gentager den.
En hemmelighed i prompten sendes til modeludbyderen sammen med resten af prompten. Giv hellere en hemmelighed til agentens værktøjer: som en hemmelig miljøvariabel i en variabelgruppe eller som tokenet til en MCP-server.
En opgaves prompt
Når afkrydsningsfeltet Prompt er slået til i skabelonen, viser opgaveformularen skabelonens prompt og lader dig ændre den for én kørsel. En tidsplan, en integration eller et workflow-trin kan på samme måde have sin egen prompt. Via API’et sendes den i opgaveparametrene:
{
"template_id": 12,
"params": {
"prompt": "Review the changes of the last release and list the risky ones."
}
}
En prompt, der gives af en opgave, bruges nøjagtigt, som den er skrevet: prompt-udtryk erstattes kun i den prompt, der er gemt i skabelonen. Det holder projektets variabler og hemmeligheder væk fra alle, der kun må køre opgaver. Hvis skabelonen ikke tillader det, afvises en opgave, der medbringer en prompt.
MCP-servere

En agent kan kalde værktøjerne på eksterne MCP-servere: en issue tracker, en dokumentationssøgning, din egen tjeneste. Serverne ligger i en inventory af den nye type MCP-inventory, og én inventory betjener både Claude Code- og Codex-skabeloner.
| Felt | Beskrivelse |
|---|---|
| Kontakt | En server, der er slået fra, bliver på listen og gives ikke til agenten. |
| Navn | Det navn, agenten kender serveren under: op til 64 bogstaver, cifre, - og _. |
| URL | En http- eller https-adresse på en server, der taler MCP over HTTP eller SSE. Et brugernavn eller en adgangskode i URL’en accepteres ikke. |
| Token | Valgfrit. Agenten sender det i Authorization-headeren som et bearer-token. |
- Et gemt token opbevares krypteret og vises aldrig igen: skriv et nyt for at erstatte det, eller fjern det.
- Tokenet når agenten som en miljøvariabel for dens proces. Det skrives ikke til agentens konfigurationsfil, til kommandolinjen eller til opgaveloggen.
- Agenten får præcis disse servere. Deres værktøjer er godkendt på forhånd, da ingen er til stede for at bekræfte et kald, og MCP-servere, der er konfigureret for den bruger, der kører Semaphore, bruges ikke.
Opgavelog

Opgaveloggen viser agentens arbejde, mens det sker, som en transskription og ikke som de JSON-hændelser, kommandolinjeværktøjet udskriver:
- Agentens tekst, linje for linje. Codex udskriver en meddelelse, når den er færdig.
- Værktøjskald, hvert på én række: tilstanden, MCP-serveren og værktøjet, argumenterne. Klik på en række for at se argumenterne og resultatet. Et fejlet kald er åbent fra starten.
- Underagenter: en underagents rækker er markeret med dens navn.
- Den første række i en Claude Code-kørsel nævner modellen og MCP-serverne, med dem, der ikke fik forbindelse, i rødt.
- Opsummeringen til sidst: antallet af ture, varigheden, tokens og omkostningerne, i det omfang agenten rapporterer dem.
Rå log viser den samme log som ren tekst.
Sikkerhed
- En agent udfører kommandoer. Inden for de rettigheder, dens kommandolinjeværktøj giver den, kan agenten læse og ændre repository-mappen, køre programmer som den bruger, der udfører opgaver, og kalde værktøjerne på sine MCP-servere. Giv en agentskabelon et repository og tokens med de snævreste rettigheder, der løser opgaven, og en separat runner til arbejde, du vil holde adskilt fra serveren.
- Hver opgave har sin egen konfigurationsmappe til agenten (
CLAUDE_CONFIG_DIR,CODEX_HOME), oprettet til opgaven og fjernet efter den. Indstillinger, logins og MCP-servere for den bruger, der kører Semaphore, når ikke agenten, og en variabel i en variabelgruppe kan ikke omdirigere mappen. - Prompten og det, agenten læser, går til modeludbyderen: filerne i repositoryet, outputtet fra kommandoer, resultaterne fra værktøjer.
- Et repository kan instruere agenten. Tekst i de filer, agenten læser, i et issue eller i resultatet fra et værktøj kan ændre, hvad agenten gør. Ret ikke en agent med stærke tokens mod indhold, du ikke kontrollerer.
- Tokens og hemmeligheder maskeres i opgaveloggen: MCP-servernes tokens og de hemmeligheder,
der er indsat i prompten, erstattes med
********. - Variabler og hemmeligheder holdes væk fra kommandolinjen for en agent, hvor proceslisten ville vise dem.
Dokumentation
Brugervejledningen har en side med alle felter og regler: AI-agenter.
