Delayed send

Delayed Send schedules an Enter keypress in an existing terminal after a delay you choose. The terminal must already contain staged command text — Delayed Send does not type the command, it only fires Enter via the native Enter bridge when the timer expires.

Workspace & sessionsAutomation

What it is

Delayed Send is useful when you want to stage a long-running command, walk away, and have Ghostex press Enter at a specific time — for timed deploys, scheduled test runs, or giving an agent time to finish output before submission.

At expiry Ghostex calls sendTerminalEnter (native Enter bridge), not a literal \r text injection. Only terminal sessions support Delayed Send — browser and editor panes show an error toast.

Opening Delayed Send

OptionWhat it does
Ctrl+Shift+SDefault hotkey (Settings → Hotkeys → Pane Actions)
Session context menuDelayed Send
Command paletteDelayed Send pane action (command mode >)
Native terminal title barHover action delayedSend
Sidebar clock iconClick to reopen modal with remaining time

Schedule workflow

  • Stage command text in the terminal — do not press Enter yet.
  • Open Delayed Send via hotkey, context menu, palette, or titlebar action.
  • Set Hours, Minutes, Seconds (default focus: 5 minutes selected in the minutes field).
  • Click Set Timer → toast: Delayed Send scheduled — Presses Enter in {duration}.
  • Countdown appears on the sidebar leading clock icon, pane tab tooltip, and floating terminal badge (updates every 1 s).
  • At expiry Ghostex sends Enter once; the timer clears automatically.

Cancel and reschedule

  • Reopen the modal while a timer runs — fields prefilled from remaining time.
  • Cancel Timer clears the in-memory timeout and persisted delayedSendDeadlineAt.
  • Set Timer with a new duration replaces the existing timer.
  • Toast on cancel: Delayed Send canceled.
  • Toast when canceling with no active timer: No Delayed Send timer is active.

Persistence and restore

delayedSendDeadlineAt is stored on the terminal session record and survives app restart.

  • On relaunch, Ghostex restores timers with a 2 s grace period (DELAYED_SEND_RESTORE_FIRE_GRACE_MS) before firing.
  • Closing, reloading, or forking a session clears its Delayed Send timer.
  • UI projection fields: delayedSendRemainingLabel (e.g. 04:32) and delayedSendRemainingMs.

Sleep interaction

  • Sleep Inactive skips terminals with active Delayed Send timers.
  • Agent Auto Sleep skips terminals with active Delayed Send timers.
  • The focused agent session is always excluded from Agent Auto Sleep regardless.
  • Terminals stay awake until the scheduled send fires, then normal sleep rules apply.

The sidebar clock icon takes precedence over tag and pin icons on session cards while a timer is active.

Settings

OptionWhat it does
hotkeys.delayedSendRebindable in Settings → Hotkeys → Pane Actions (default: ctrl+shift+s)

There is no separate Delayed Send on/off toggle — the feature is always available for terminal sessions.

Tips

  • Verify staged text before Set Timer — Delayed Send cannot be undone after Enter fires.
  • Use the sidebar clock icon to check remaining time without opening the full modal.
  • Reschedule instead of cancel+recreate when you only need a few more minutes.
  • Delayed Send works in command-pane terminals the same as workspace agent terminals.
  • Pair with Agent Auto Sleep disabled or long idle timers so sleep does not interfere before send.

Related docs