bacluc-opencode-keep-running
v0.3.0
Published
OpenCode plugin that detects when the agent is stuck and automatically continues the session
Maintainers
Readme
opencode-keep-running
An OpenCode plugin that detects when the AI agent is stuck and automatically sends a "continue" prompt to keep the session running.
How It Works
- Tracks activity — Monitors
session.status,message.part.updated,message.updated, andtool.execute.afterevents - Detects stuck sessions — When a session is busy but no activity is detected within the threshold, it's considered stuck
- Auto-continues — Aborts the stuck run and sends a configurable message to prompt the agent to keep going
- Re-schedules monitoring — After a continue is sent, monitoring resumes so subsequent stucks are also detected (up to
maxContinues)
Installation
opencode plugin bacluc-opencode-keep-runningOr add to your opencode.json:
{
"plugin": ["bacluc-opencode-keep-running@<version>"]
}Configuration
{
"plugin": [
[
"opencode-keep-running",
{
"threshold": 120000,
"message": "continue",
"abortBeforeContinue": true,
"abortCooldown": 3000,
"maxContinues": 5,
"continueCooldown": 30000,
"debug": false
}
]
]
}| Option | Type | Default | Description |
| --------------------- | --------- | ---------------- | ------------------------------------------------------------- |
| threshold | number | 120000 (2 min) | Inactivity threshold in ms before considering the agent stuck |
| message | string | "continue" | Message to send when the agent is stuck |
| abortBeforeContinue | boolean | true | Whether to abort the current run before sending continue |
| abortCooldown | number | 3000 (3s) | Delay in ms after aborting before sending continue |
| maxContinues | number | 5 | Maximum continue attempts per session |
| continueCooldown | number | 30000 (30s) | Cooldown in ms between continues |
| debug | boolean | false | Enable debug logging via opencode app.log |
Behavior Details
- Continue count is tracked per session and resets only when a new session is created. Going idle does not reset the count — if the agent gets stuck 5 times in the same session, it stops trying.
- Activity events reset the inactivity timer, meaning any tool call, message part, or status change (including retry) keeps the session from being considered stuck.
- Re-scheduling: After a continue is sent, monitoring resumes automatically. If the agent gets stuck again, another continue is sent (subject to
maxContinuesandcontinueCooldown).
Development
npm install
npm test