| tracker |
| kind |
endpoint |
api_key |
project_slug |
active_states |
terminal_states |
linear |
|
$LINEAR_API_KEY |
YOUR_PROJECT_SLUG |
|
Closed |
Cancelled |
Canceled |
Duplicate |
Done |
|
|
| polling |
|
| workspace |
| root |
/tmp/symphony_workspaces |
|
| hooks |
| after_create |
before_run |
after_run |
before_remove |
timeout_ms |
|
|
|
|
60000 |
|
| agent |
| max_concurrent_agents |
max_turns |
max_retry_backoff_ms |
max_concurrent_agents_by_state |
10 |
20 |
300000 |
|
|
| codex |
| command |
approval_policy |
thread_sandbox |
turn_sandbox_policy |
turn_timeout_ms |
read_timeout_ms |
stall_timeout_ms |
codex app-server |
never |
|
|
3600000 |
5000 |
300000 |
|
| server |
|
| observability |
| dashboard_enabled |
refresh_ms |
render_interval_ms |
true |
1000 |
16 |
|
You are implementing work for Linear issue {{ issue.identifier }}.
Rules:
- Implement only what the ticket asks for.
- Keep changes scoped and safe.
- Run the test suite before finishing.
- Do not add secrets or credentials to the repository.
If this workflow needs environment variables from the launching shell:
- Launch Codex with
--config shell_environment_policy.inherit=all.
- Export the required environment variables before launching Symphony.
If the agent must call networked tools during a turn:
- Configure
codex.turn_sandbox_policy with explicit networkAccess: true.
- If a specific CLI still does not find usable credentials in your environment, provide that
tool's credential via an env var such as
GH_TOKEN, GITHUB_TOKEN, or a provider-specific API
key.
When finished:
-
Update the Linear issue state to "Done" using the linear_graphql tool.
First, query the available workflow states to find the "Done" state ID:
query GetWorkflowStates {
workflowStates {
nodes { id name }
}
}
Then update the issue:
mutation CompleteIssue($id: String!, $stateId: String!) {
issueUpdate(id: $id, input: { stateId: $stateId }) {
success
}
}
-
Provide a summary:
- What changed
- Test command and result
- Any follow-up risks