Ticket Workflows
frg ticket investigates a customer support ticket: it triages the ticket, investigates the root cause, drafts a customer update, answers follow-up questions, and looks for related tickets. Use it when a ticket needs a documented investigation, not a one-off reply.
Prerequisites
-
A valid Telerik license. See Licensing.
-
A supported coding agent, installed and authenticated. Check it with
frg status. -
A ticket tracker configured in
.forge/config/toolchain.toml([ticket_tracker]). Built-in trackers:github_issues,jira,azure_devops,shortcut,local. Without it, Forge reportsTicket tracker not configured.bashfrg config init --tickets github_issues --code github -
Tracker credentials, as required by the selected tracker and access method.
-
A Ticket ID in the current context. An Issue ID does not substitute for it. Without one, Forge stops with
Ticket ID required for 'ticket' operations.bashfrg config set-ticket SUP-12345 # or: export FORGE_TICKET_ID=SUP-12345 frg config show-contextAccepted formats include
123456(Zendesk),INC0012345(ServiceNow), and custom IDs such asTICKET-42.FORGE_TICKET_IDtakes precedence over the value in.forge/context.toml.
Subcommands at a glance
All files are written to .forge/work/ticket_<ticket_id>/.
| Subcommand | What it does | Typical inputs | Outputs | Default role |
|---|---|---|---|---|
triage | Determines severity and identifies missing information | The ticket in the tracker | triage/ticket.md, triage/ticket_summary.md, triage/investigation_plan.md, triage/initial_response.md | sre |
respond | Investigates the root cause and drafts a response | Triage files, project code | respond/investigation_report.md, respond/customer_update.md | sre |
ask | Answers a question about the ticket | Question, triage and respond files | answer.md | sre |
correlate | Analyzes patterns across related tickets | Triage and respond files, tracker search | related_tickets_analysis.md | sre |
Typical flow
set-ticket ──► triage ──► triage --edit ──► respond ──► ask ──► correlate
│ │
▼ ▼
initial_response.md customer_update.md (review before sending)
-
Set the ticket:
bashfrg config set-ticket SUP-12345 -
Triage it and refine the plan:
bashfrg ticket triage frg ticket triage --edit "The customer confirmed the issue only occurs behind a proxy" -
Investigate and draft the customer update:
bashfrg ticket respond -
Check the evidence:
bashfrg ticket ask "What evidence supports the current root-cause assessment?" -
Look for a systemic problem:
bashfrg ticket correlate -
Review every file before sharing it. Clear the context when the investigation ends:
bashfrg config clear-ticket
If you find a product defect, track it with the issue workflow. Ticket and issue contexts are independent and can both be set.
Options shared by all subcommands
Every frg ticket subcommand accepts these options.
| Option | Description | Default |
|---|---|---|
-a, --agent <NAME> | Coding agent for this run: claude_code, github_copilot, or opencode. | Agent in agents.toml |
-r, --role <ROLE> | Overrides the default role: product_manager, software_engineer, software_architect, technical_writer, security_analyst, sre. Cannot be combined with --custom-agent. | sre |
--custom-agent <NAME> | Selects a custom agent configuration inside your coding agent. Cannot be combined with --role. | None |
-m, --model <MODEL> | Overrides the model configured in agents.toml. | Model in agents.toml |
-c, --context-file <FILE> | Adds a file path as context. Repeatable. | None |
--context-dir <DIR> | Adds a directory as context. Repeatable. Up to 100 files per directory and 1 MB per file. | None |
--clear | Clears the existing agent session and starts fresh. | Off |
--retry [<INSTRUCTIONS>] | Continues the previous session to complete missing outputs. Requires an existing session; cannot be combined with --clear. | Off |
--auto-retry | Retries once automatically when expected outputs are missing. Cannot be combined with --clear. | Off |
--print-prompt | Prints the compiled prompt without running the agent. | Off |
--bypass-safety-checks | Skips prompt-injection validation. Bypasses are logged. | Off |
-q, --quiet | Suppresses all output except errors. | Off |
To follow agent progress from another terminal, run FORGE_TICKET_ID=SUP-12345 frg --tail.
frg ticket triage
Retrieves the ticket, assesses its severity and impact, identifies missing information, and creates an investigation plan. Triage is not a completed root-cause investigation.
frg ticket triage [OPTIONS]
| Option | Description |
|---|---|
--edit [<INSTRUCTIONS>] | Refines the triage files with your instructions, given inline or in edit.md. |
frg ticket triage
frg ticket triage --edit "Raise severity: three enterprise customers are affected"
Outputs in .forge/work/ticket_<ticket_id>/triage/:
| File | Content |
|---|---|
ticket.md | Copy of the original ticket |
ticket_summary.md | Initial assessment, including suggested severity |
investigation_plan.md | Investigation steps and evidence to collect |
initial_response.md | Draft reply that requests information or suggests safe temporary actions |
frg ticket respond
Investigates the issue using the triage files and relevant project material, then records evidence, root-cause analysis, remediation recommendations, and a customer-facing update.
frg ticket respond [OPTIONS]
| Option | Description |
|---|---|
--edit [<INSTRUCTIONS>] | Refines the existing response with your instructions, given inline or in edit.md. |
frg ticket respond
frg ticket respond --edit "Remove internal service names from the customer update"
Outputs in .forge/work/ticket_<ticket_id>/respond/:
| File | Content |
|---|---|
investigation_report.md | Evidence, root-cause analysis, and remediation recommendations |
customer_update.md | Customer-facing draft of the result and next steps |
Notes:
- Run
triagefirst sorespondhas a documented scope and plan. - Review
customer_update.mdfor confidential details before sending it.
frg ticket ask
Answers a focused question using the ticket and the available triage and respond files. If the triage copy does not exist, it retrieves the ticket from the tracker. It does not change the investigation files.
frg ticket ask [OPTIONS] [QUESTION]
No additional options.
frg ticket ask "Which customer actions are still outstanding?"
Output: .forge/work/ticket_<ticket_id>/answer.md.
frg ticket correlate
Searches the tracker for tickets with similar symptoms, error messages, timing, versions, configurations, or environments, and analyzes possible shared root causes. The analysis separates correlation from causation.
frg ticket correlate [OPTIONS]
No additional options.
frg ticket correlate
Output: .forge/work/ticket_<ticket_id>/related_tickets_analysis.md.
Troubleshooting
Ticket ID required for 'ticket' operations
Cause: No Ticket ID is set. An Issue ID does not count.
Solution:
- Run
frg config set-ticket <ticket_id>orexport FORGE_TICKET_ID=<ticket_id>. - Run the ticket command again.
Verify: frg config show-context
Ticket tracker not configured.
Cause: .forge/config/toolchain.toml has no [ticket_tracker] entry.
Solution:
- Run
frg config init --tickets <tracker> --code <platform>, for examplefrg config init --tickets jira --code github. Add--forceto replace an existingtoolchain.toml. - Check that
ticket_tracker.nameis a built-in tracker or a configured custom tool.
Verify: frg config validate
respond, ask, or correlate cannot find earlier results
Cause: Triage has not run for the active Ticket ID, or an earlier run used a different ID.
Solution:
- Check the active ID with
frg config show-context. - Inspect
.forge/work/ticket_<ticket_id>/. - Run
frg ticket triage, then the original command.
See Also
- Toolchain Configuration: ticket tracker and access methods.
- Context Configuration.
- Issue Management: track product defects found during an investigation.
- Pull Requests: ship the product fix.
- Command Reference.