Skip to main content

Support

Escalate to a human operator when Jarvis hits a policy refusal, confidence collapse, or an explicit user handoff request.

Skill metadata​

SourceBundled (installed by default)
Pathskills/support
Version1.0.0
Platformslinux, macos
Tagssupport, escalation, hitl, safety
Related skillsclarify

Reference: full SKILL.md​

info

The following is the complete skill definition that Claway loads when this skill is triggered. This is what the agent sees as instructions when the skill is active.

Support: escalate to a human

Overview​

Some conversations Jarvis should not carry alone. This skill gives Jarvis a disciplined off-ramp: post a concise summary of the situation to a pre-configured escalation channel (Slack, an internal ticketing API, a customer's CRM) via the outbound webhook system, then tell the end user a human will follow up.

When to invoke this skill​

Use it whenever any of the following are true:

  • The user explicitly asks for a human ("please have someone call me", "I need to speak to a person").
  • The user's request would require Jarvis to violate a persona rule (approve a payment above threshold, share PII across groups, sign a contract, promise a delivery date it cannot verify).
  • Jarvis has attempted the task and its confidence is meaningfully below what it usually is — kb_search returned nothing relevant, the model gave a hedged answer, an external API returned an error the user is waiting on.
  • The user has been given the same non-answer twice in a row.
  • The topic touches legal action, media, personal data changes, or anything the persona explicitly listed as escalation triggers.

When NOT to invoke this skill​

  • The user is just asking a routine question you have a KB answer for.
  • The user asked a follow-up you can plausibly handle with one more tool call. Try that first.
  • The persona's rules explicitly say "handle without escalation" for the specific category.

The escalation payload​

Call the outbound webhook subscriber(s) whose event_types includes escalation with a JSON body:

{
"event_type": "escalation",
"chat_id": "<the chat this happened in>",
"reason": "user_request | policy_refusal | confidence_collapse | repeat_failure",
"summary": "<one paragraph of what the user asked + why Jarvis stopped>",
"user_utterance": "<the last user message, verbatim>",
"suggested_response": "<optional — what Jarvis was about to say>",
"urgency": "low | normal | high"
}

summary is the most important field. Write it so the human on-call can decide what to do in under 15 seconds. Include:

  1. Who is asking (customer name, role if known).
  2. What they want ("Refund for order #4472, HK$3,200").
  3. Why Jarvis stopped ("Refund threshold is HK$1,500, must be approved by a human").
  4. What's already been tried, if anything.

Do NOT include the full conversation transcript — the human can pull that themselves from the dashboard's Conversations page. Keep the payload tight.

What to say to the user​

After the webhook fires successfully, reply to the user in the group with something like:

我已經幫你 escalate 呢個 request 俾我哋 team 睇。有人會喺 <horizon> 內回覆你。呢單 case 嘅 reference 係 <returned id>. 你可以直接引用 呢個 reference 追進度。

Adjust language + tone to match the persona. <horizon> is the persona's declared response SLA (default: "within one business day"). <returned id> is the id the webhook subscriber returned in its response body, if any.

If the webhook subscriber's response body did not include an id, do not invent one. Say "someone from our team will get back to you soon" instead.

Failure modes​

  • Webhook subscriber returned 5xx. The dashboard's dispatcher will retry per the configured backoff. Still tell the user "I've flagged this for a human" — the human will see the escalation eventually.
  • No escalation subscriber configured. The dashboard's persona should include a "manual escalation" instruction — usually pinging a specific person (@operator) directly in the group. Fall back to that.
  • The user asks Jarvis to un-escalate. Do not do it. The human is already in the loop; a retract would create confusion.

Testing this skill​

  • The dashboard has a Webhooks → Test-fire button. Use it before going live with a new escalation subscriber to verify the payload lands with a good signature.
  • Simulate a policy-refusal case in a staging chat and confirm the escalation fires with the right reason.
  • clarify — sometimes what looks like escalation is actually an ambiguous request. Try one round of clarify first.
  • Persona escalation rules — every persona should list its escalation triggers explicitly. This skill is the execution layer; the persona is the policy layer.