You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
v2 session.prompt dropped system and noReply #48345
v1 session.promptAsync let a harness pass a per-request system prompt and a silent context message:
awaitclient.session.promptAsync({
sessionID,parts: [{type: 'text',text: userText}],system: 'You are running in Discord via kimaki.dev.',noReply: true,})
v2 session.prompt / session.command only take text, files, delivery. There is no system and no noReply.
Kimaki has to dump the system prompt to a file and have a plugin copy it into ctx.session.hook('context'). Silent context (a user message that should not start a turn) has no replacement.
Please add system?: string and noReply?: boolean back on session.prompt and session.command, same as v1 promptAsync.
that limit does not make sense as a stand-in for v1 system.
v1 promptAsync({ system }) took a full session system prompt. kimaki's is tens of kb: discord routing, slash commands, shell extra fields, session ids. AGENTS.md / skill files already inject large instruction text through discovery. hashing and blob storage in #36254 already handle arbitrary json values. an 8kb wall only on the public PUT is an artificial client limit, not a storage one.
please remove MaxValueBytes (or raise it to something that can actually hold a session system prompt). otherwise entry.put cannot replace system, and every harness has to invent a side channel (file, sqlite, plugin hook) to do what v1 did in one field.
still want system / noReply on session.prompt and session.command as the real fix. dropping the 8kb cap is the workaround so entry.put after session.create can hold the same text until then.
These behaviors are available through separate V2 APIs:
// Admit a normal user message without starting the agent loop.awaitclient.session.prompt({
sessionID,text: userText,resume: false,})// Admit model-visible synthetic context without starting the agent loop.awaitclient.session.synthetic({
sessionID,text: context,resume: false,})// Attach durable, session-scoped system instructions.awaitclient.session.instructions.entry.put({
sessionID,key: "kimaki",value: system,})
resume: false is the V2 equivalent of admitting input without requesting a reply. Instruction-entry changes apply at the next step boundary. The 8 KiB limit is per entry; larger instruction sets can be split across stable keys such as kimaki.000, kimaki.001, etc.
session.command immediately executes a slash-command callback rather than admitting a prompt, so prompt admission and system context are handled through the APIs above.
Activity
remorses commentedon Sep 10, 2026
while waiting for
systemon prompt/command, i triedsession.instructions.entry.putas the replacement.that api is capped at 8kb (
InstructionEntry.MaxValueBytesin https://github.com/anomalyco/opencode/blob/v2/packages/schema/src/instruction-entry.ts, from #36254). over that it 413s withInstructionEntryValueTooLargeError. no truncate.that limit does not make sense as a stand-in for v1
system.v1
promptAsync({ system })took a full session system prompt. kimaki's is tens of kb: discord routing, slash commands, shell extra fields, session ids. AGENTS.md / skill files already inject large instruction text through discovery. hashing and blob storage in #36254 already handle arbitrary json values. an 8kb wall only on the public PUT is an artificial client limit, not a storage one.please remove
MaxValueBytes(or raise it to something that can actually hold a session system prompt). otherwiseentry.putcannot replacesystem, and every harness has to invent a side channel (file, sqlite, plugin hook) to do what v1 did in one field.still want
system/noReplyonsession.promptandsession.commandas the real fix. dropping the 8kb cap is the workaround soentry.putaftersession.createcan hold the same text until then.opencode-agent commentedon Sep 10, 2026
These behaviors are available through separate V2 APIs:
resume: falseis the V2 equivalent of admitting input without requesting a reply. Instruction-entry changes apply at the next step boundary. The 8 KiB limit is per entry; larger instruction sets can be split across stable keys such askimaki.000,kimaki.001, etc.session.commandimmediately executes a slash-command callback rather than admitting a prompt, so prompt admission and system context are handled through the APIs above.Closing as covered by the current V2 API.
nexxeln commentedon Sep 10, 2026
looking into the limit thing
nexxeln commentedon Sep 10, 2026
raised the limit!