Short description
bash long_running_reminder_enabled: false does not suppress completion reminders
What happened?
Description
Setting bash.long_running_reminder_enabled: false in user-level config does not suppress background bash completion <system-reminder> messages. The config field is parsed and stored in ResolvedBashConfig, but no gate was wired in the notification pipeline.
Reproduction
- Set in
~/.config/opencode/aft.jsonc:
"bash": {
"rewrite": false,
"compress": false,
"long_running_reminder_enabled": false
}
- Run a command that gets promoted to background (e.g. sleep 12)
- On next tool call, a block still appears with [BACKGROUND BASH COMPLETED]
Root cause
The config field is parsed and stored in ResolvedBashConfig, but the bash tool sets notify_on_completion unconditionally without checking it. The notification pipeline (handlePushedBgCompletion → appendInTurnBgCompletions → formatCombinedSystemReminder) never reads this config field, so the gate was never wired.
The Rust side (bash_long_running_reminder_enabled) receives the flag but doesn't need it — the gate belongs on the TypeScript side where the <system-reminder> is injected.
Config
- Plugin: @cortexkit/aft-opencode v0.35.1
- Binary: v0.35.1
- Platform: Windows x64
Diagnostics
Plugin version
0.35.1
AFT binary version
0.35.1
Platform
windows x64
Log output (optional)
Short description
bash long_running_reminder_enabled: false does not suppress completion reminders
What happened?
Description
Setting
bash.long_running_reminder_enabled: falsein user-level config does not suppress background bash completion<system-reminder>messages. The config field is parsed and stored inResolvedBashConfig, but no gate was wired in the notification pipeline.Reproduction
~/.config/opencode/aft.jsonc:Root cause
The config field is parsed and stored in
ResolvedBashConfig, but the bash tool setsnotify_on_completionunconditionally without checking it. The notification pipeline (handlePushedBgCompletion→appendInTurnBgCompletions→formatCombinedSystemReminder) never reads this config field, so the gate was never wired.The Rust side (
bash_long_running_reminder_enabled) receives the flag but doesn't need it — the gate belongs on the TypeScript side where the<system-reminder>is injected.Config
Diagnostics
Plugin version
0.35.1
AFT binary version
0.35.1
Platform
windows x64
Log output (optional)