Oko/Docs

Command reference

oko suggestions reply

Runs only the targeted Slack reply portion of a suggestions tick, or answers one message outside Slack and posts it nowhere.

Invocation#

Command
oko suggestions reply [--channel ID] [--trigger-ts TS] | oko suggestions reply --message TEXT --no-post

Inputs and options#

  • Optional exact --channel and --trigger-ts; timestamp requires a channel. Empty or duplicate filters are refused.
  • --message TEXT with --no-post answers that one message as the responder would, with no Slack thread behind it.
  • Oko Desktop settings bound the pass only when set, with no built-in values: oko.slack.replyMaxAgeSeconds (older triggers and threads are skipped), oko.slack.modelReplyMaxAgeSeconds (older triggers get the backlog note instead of a model reply), oko.slack.maxRepliesPerConversation (how many triggers one conversation answers) and oko.slack.replyScanHistoryLimit (how much history is scanned; the whole conversation otherwise). A reply record that cannot be read is printed (`# reply record unreadable channel=<id> ts=<ts>: <cause>`) and counts as answered only when Oko's reply follows in the thread.

Output and state effect#

  • Answers eligible unresolved messages and returns before proactive advisories, assignments or ambient posts. Retained execution-result delivery is retried without executing work again.
  • With --message --no-post: prints a deterministic, tool or model reply; nothing is posted and no goal or approval changes for live-thread-only intents.
  • A work-metrics answer counts today's commits only in the repositories under Oko Desktop's projects and execution roots (each root itself, or each visible directory directly under it). The directory the command runs from is not read, so running it from the home directory never opens Music, Pictures or another folder macOS protects.
  • A work-metrics answer names what it could not read instead of counting it as nothing: `nie odczytano: cannot list project root <path>: <cause>`, `nie odczytano: git log in <repo> exited <status>: <stderr>`, `nie odczytano: git log in <repo> did not run: <cause>` and `nie odczytano: <setting> is "~/…", but HOME cannot be read: <cause>`; a Slack cache line that is not JSON or has no Slack timestamp is listed as `nieczytelny wiersz cache: <cause>: <line>`. One process table is read for the Codex, Claude and Kimi counts, and a table that cannot be read leaves all three unknown with its cause.

Refusals and safe exits#

  • Uses the same credential, scope and durable-execution refusals as tick. Skips stale, duplicate, ineligible or already-answered triggers.
  • --message without --no-post is refused (exit 2): `oko suggestions reply --message TEXT answers one message outside Slack and posts it nowhere; pass --no-post to say so`; an empty message is refused; close-goal and plan-approval mutations are withheld.

CLI reference#