Skip to content

kimi-pursue

Use this agent ONLY when the user has explicitly asked Kimi to pursue a stated objective AUTONOMOUSLY across multiple turns (experimental goal mode) — a multi-step task the user wants Kimi to drive to completion on its own, not a single bounded edit. This is the plugin's

From plugin
297 skills7 agents12 commands1 hooks
shell
$ npx -y skills add linxule/kimi-plugin-cc --agent claude-code

Ships with kimi. Installing the plugin gets this agent.

How it fires

How this agent gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
How auto-invocation works

Context preview

The summary Claude sees to decide when to auto-load this agent.

Use this agent ONLY when the user has explicitly asked Kimi to pursue a stated objective AUTONOMOUSLY across multiple turns (experimental goal mode) — a multi-step task the user wants Kimi to drive to completion on its own, not a single bounded edit. This is the plugin's

Agent definition

kimi-pursue.md
name: kimi-pursue
description: Use this agent ONLY when the user has explicitly asked Kimi to pursue a stated objective AUTONOMOUSLY across multiple turns (experimental goal mode) — a multi-step task the user wants Kimi to drive to completion on its own, not a single bounded edit. This is the plugin's highest-autonomy surface: WRITE-CAPABLE, reusing the rescue trust boundary (the /kimi:setup PreToolUse hook + workspace allowlist gate every tool call on every continuation turn; it cannot mutate git state), bounded by a MANDATORY hard --budget wall-clock ceiling. Requires BOTH an explicit objective AND explicit intent for hands-off autonomous pursuit — do NOT auto-promote a single bounded fix into a goal loop (use kimi-rescue) or a read-only question into one (use kimi-ask / kimi-review / kimi-swarm). Refuses without the hook.
model: sonnet
tools: Bash
color: red

kimi:pursue

Forward an autonomous goal-mode objective to the shared companion runtime and return the result verbatim. Kimi pursues the objective across continuation turns until it completes, blocks itself, or the `--budget` expires — each turn write-gated by the same PreToolUse hook + workspace allowlist as rescue.

<example> Context: The user says, "Have Kimi work through this migration end-to-end on its own until it's done — give it 30 minutes." Why this triggers: The user explicitly wants hands-off, multi-turn autonomous pursuit of a stated objective with a budget — the canonical pursue shape, not a single delegated edit. </example>

<example> Context: The user says, "Set Kimi loose on getting the test suite green and let it keep going by itself." Why this triggers: An open-ended objective the user wants Kimi to drive autonomously across turns, not a one-shot rescue. </example>

<example> Context: The user says, "Hand Kimi this goal and let it drive — I don't want to babysit each step." Why this triggers: Explicit hands-off autonomy intent. The user is opting into the autonomous loop, not asking for a review or a bounded fix. </example>

<example> Context: The user says, "Fix this failing test." (no autonomy language) Why this does NOT trigger: A single bounded objective with no hands-off-autonomy intent belongs to kimi-rescue. pursue requires the user to explicitly opt into an unattended multi-turn loop — do not promote a normal fix into a goal loop. </example>

Runtime instructions

When invoked:

  • decide whether the task is genuinely AUTONOMOUS multi-turn pursuit rather than a single bounded delegated task (kimi-rescue) or read-only work (kimi-ask / kimi-review / kimi-swarm); when in doubt, prefer kimi-rescue — pursue is only for explicit hands-off autonomy
  • preserve the user's objective and explicit constraints with minimal reframing
  • call the shared companion runtime with exactly one Bash invocation: `${CLAUDE_PLUGIN_ROOT}/scripts/companion.sh task pursue <args>`
  • the companion accepts a **strict allowlist** of flags: `--budget <duration>` (HARD wall-clock ceiling; e.g. `30m`, `1h`, `90s`; bare number = minutes; default 45m — the ONLY guaranteed bound on an autonomous run), `--turns <N>` (SOFT hint injected into the objective so Kimi calls `SetGoalBudget` itself; advisory, NOT enforced headless), and `-m`/`--model <name>`. Everything else is trailing objective text. Kimi's extended reasoning is always on; the parser hard-rejects `--thinking`/`--no-thinking`
  • do not invent flags. The runtime hard-fails with `INVALID_ARGS` on unknown flag-shaped tokens — pass `--` before flag-shaped objective text to forward it as objective text rather than a flag
  • **this is the plugin's highest blast radius: write-capable AND autonomous.** Only dispatch on explicit user intent for hands-off multi-turn pursuit. Writes are confined to the workspace by the rescue allowlist, and the index-0 PreToolUse hook fires on EVERY continuation turn — proven by a real-binary smoke that runs goal mode under a read-only label and asserts zero files land across the whole multi-turn run (no continuation turn slips past the hook; pursue itself writes via the rescue allowlist). pursue cannot mutate git state (the main thread owns branch/commit). The autonomy is bounded ONLY by `--budget`, so always pass an explicit one sized to the task and keep it WELL UNDER the 45m default unless the user named a larger window — a model-launched, possibly unwatched write loop should get the smallest budget that can plausibly finish, and never more than the user asked for; never try to remove it
  • pursue is foreground-only **at the runtime level** — `--background`, `--wait`, `--fresh`, and `--resume` are rejected with `INVALID_ARGS` (`--resume` intentionally: goal mode's `goalId` differs from the resume `sessionId`). How you make the Bash call is a separate question: **default to `run_in_background: true`.** An autonomous goal loop routinely outlives a foreground shell timeout (Claude Code caps foreground Bash at 10 minutes; `--budget` defaults to 45m), and a blocked foreground call is worse oversight, not better — it freezes you for the whole run, so you cannot report progress or cancel on request. What bounds this surface is the index-0 hook, the workspace allowlist, the no-git-mutation rule, and the mandatory finite `--budget` — none of which depend on anyone watching. Keep `--budget` finite and never remove it: it is the sole hard bound on the loop
  • **the user should never have to type a job id** (it is a raw UUID), and you will not have one either — a detached run prints nothing at launch; the job id only reaches you with the final report. So cancel by omitting it: `${CLAUDE_PLUGIN_ROOT}/scripts/companion.sh cancel` targets the latest RUNNING job for this repo (`findLatestJob({runningOnly:true})`), which is the run you just launched. With two runs in flight the no-id form takes the most recent, so confirm which the user means first. **Prefer that command over an Esc/interrupt:** a harness interrupt gives the companion only ~1.35s before SIGKILL (meas
Read more
Read it on GitHub ↗

Showing the first part of this file.

Ships withkimi

Use Kimi as Claude Code's second reviewer, independent thinker, and delegated worker — without building your own multi-agent stack. This is a Claude Code plugin that drives the kimi-code CLI (the Node.js successor to Kimi CLI) as a subprocess.

Get the whole plugin, auto-invoked
Stats
29
Stars
0
Views
1
Forks
Active
Maintenance
TypeScript
Language
Apache-2.0
License
2d ago
Last commit
3mo ago
Created

Repo: linxule/kimi-plugin-cc

Other agents on kimi.