New to FORGE? Start a free 30-day trial

Ticket Workflows

Updated on Oct 1, 2026

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 reports Ticket tracker not configured.

    bash
    frg 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.

    bash
    frg config set-ticket SUP-12345     # or: export FORGE_TICKET_ID=SUP-12345
    frg config show-context

    Accepted formats include 123456 (Zendesk), INC0012345 (ServiceNow), and custom IDs such as TICKET-42. FORGE_TICKET_ID takes precedence over the value in .forge/context.toml.

Subcommands at a glance

All files are written to .forge/work/ticket_<ticket_id>/.

SubcommandWhat it doesTypical inputsOutputsDefault role
triageDetermines severity and identifies missing informationThe ticket in the trackertriage/ticket.md, triage/ticket_summary.md, triage/investigation_plan.md, triage/initial_response.mdsre
respondInvestigates the root cause and drafts a responseTriage files, project coderespond/investigation_report.md, respond/customer_update.mdsre
askAnswers a question about the ticketQuestion, triage and respond filesanswer.mdsre
correlateAnalyzes patterns across related ticketsTriage and respond files, tracker searchrelated_tickets_analysis.mdsre

Typical flow

text
set-ticket ──► triage ──► triage --edit ──► respond ──► ask ──► correlate
                 │                             │
                 ▼                             ▼
         initial_response.md           customer_update.md  (review before sending)
  1. Set the ticket:

    bash
    frg config set-ticket SUP-12345
  2. Triage it and refine the plan:

    bash
    frg ticket triage
    frg ticket triage --edit "The customer confirmed the issue only occurs behind a proxy"
  3. Investigate and draft the customer update:

    bash
    frg ticket respond
  4. Check the evidence:

    bash
    frg ticket ask "What evidence supports the current root-cause assessment?"
  5. Look for a systemic problem:

    bash
    frg ticket correlate
  6. Review every file before sharing it. Clear the context when the investigation ends:

    bash
    frg 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.

OptionDescriptionDefault
-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
--clearClears 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-retryRetries once automatically when expected outputs are missing. Cannot be combined with --clear.Off
--print-promptPrints the compiled prompt without running the agent.Off
--bypass-safety-checksSkips prompt-injection validation. Bypasses are logged.Off
-q, --quietSuppresses 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.

text
frg ticket triage [OPTIONS]
OptionDescription
--edit [<INSTRUCTIONS>]Refines the triage files with your instructions, given inline or in edit.md.
bash
frg ticket triage
frg ticket triage --edit "Raise severity: three enterprise customers are affected"

Outputs in .forge/work/ticket_<ticket_id>/triage/:

FileContent
ticket.mdCopy of the original ticket
ticket_summary.mdInitial assessment, including suggested severity
investigation_plan.mdInvestigation steps and evidence to collect
initial_response.mdDraft 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.

text
frg ticket respond [OPTIONS]
OptionDescription
--edit [<INSTRUCTIONS>]Refines the existing response with your instructions, given inline or in edit.md.
bash
frg ticket respond
frg ticket respond --edit "Remove internal service names from the customer update"

Outputs in .forge/work/ticket_<ticket_id>/respond/:

FileContent
investigation_report.mdEvidence, root-cause analysis, and remediation recommendations
customer_update.mdCustomer-facing draft of the result and next steps

Notes:

  • Run triage first so respond has a documented scope and plan.
  • Review customer_update.md for 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.

text
frg ticket ask [OPTIONS] [QUESTION]

No additional options.

bash
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.

text
frg ticket correlate [OPTIONS]

No additional options.

bash
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:

  1. Run frg config set-ticket <ticket_id> or export FORGE_TICKET_ID=<ticket_id>.
  2. 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:

  1. Run frg config init --tickets <tracker> --code <platform>, for example frg config init --tickets jira --code github. Add --force to replace an existing toolchain.toml.
  2. Check that ticket_tracker.name is 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:

  1. Check the active ID with frg config show-context.
  2. Inspect .forge/work/ticket_<ticket_id>/.
  3. Run frg ticket triage, then the original command.

See Also