Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
071092a
test(tui): cover unbranded sidebar footer Refs #39
filipeforattini Aug 17, 2026
c2ce99a
fix(tui): remove sidebar product footer Refs #39
filipeforattini Aug 17, 2026
23cde55
fix(tui): drop fallback product footer Refs #39
filipeforattini Aug 17, 2026
c7402fa
test(opencode): define truthful title labels Refs #39
filipeforattini Aug 17, 2026
8943de4
fix(opencode): keep generated titles truthful Refs #39
filipeforattini Aug 17, 2026
dbee9cf
test(tui): require Redcode crash reports Refs #39
filipeforattini Aug 17, 2026
5eeac6d
fix(tui): point crashes at Redcode Refs #39
filipeforattini Aug 17, 2026
541b7ae
test(tui): enforce Redcode branding contract Refs #39
filipeforattini Aug 17, 2026
e1cbf3a
fix(tui): show Redcode shell commands Refs #39
filipeforattini Aug 17, 2026
d216b90
fix(tui): brand default notifications Redcode Refs #39
filipeforattini Aug 17, 2026
8ad4e41
test(tui): expect Redcode notification titles Refs #39
filipeforattini Aug 17, 2026
a85fc68
fix(tui): update shell error guidance Refs #39
filipeforattini Aug 17, 2026
4f95ab7
fix(opencode): update CLI recovery commands Refs #39
filipeforattini Aug 17, 2026
6833b42
test(opencode): expect Redcode recovery copy Refs #39
filipeforattini Aug 17, 2026
c08f0f3
fix(tui): brand permission copy Redcode Refs #39
filipeforattini Aug 17, 2026
a107d5e
test(opencode): expect Redcode permission copy Refs #39
filipeforattini Aug 17, 2026
32b1d00
fix(opencode): update permission lifetime copy Refs #39
filipeforattini Aug 17, 2026
e44dbc6
fix(opencode): brand permission feedback Redcode Refs #39
filipeforattini Aug 17, 2026
29200cb
fix(tui): show Redcode MCP command Refs #39
filipeforattini Aug 17, 2026
49cd829
fix(tui): brand hook import copy Redcode Refs #39
filipeforattini Aug 17, 2026
8602331
fix(tui): recommend Redcode config names Refs #39
filipeforattini Aug 17, 2026
8ee701b
fix(tui): brand keymap errors Redcode Refs #39
filipeforattini Aug 17, 2026
7c39d54
test(tui): allow external OpenCode share links Refs #39
filipeforattini Aug 17, 2026
32a8a9b
test(tui): scan interpolated branding copy Refs #39
filipeforattini Aug 17, 2026
656d3e3
fix(opencode): brand attach help Redcode Refs #39
filipeforattini Aug 17, 2026
f35935f
fix(opencode): show Redcode MCP guidance Refs #39
filipeforattini Aug 17, 2026
6ba733d
fix(opencode): launch Redcode from PR flow Refs #39
filipeforattini Aug 17, 2026
612bcff
fix(opencode): brand server output Redcode Refs #39
filipeforattini Aug 17, 2026
b79e118
fix(opencode): brand TUI help Redcode Refs #39
filipeforattini Aug 17, 2026
76bbedb
fix(opencode): brand run help Redcode Refs #39
filipeforattini Aug 17, 2026
a485b51
fix(opencode): brand exit command Redcode Refs #39
filipeforattini Aug 17, 2026
e3323ac
fix(opencode): brand mini splash Redcode Refs #39
filipeforattini Aug 17, 2026
db78347
fix(opencode): brand web help Redcode Refs #39
filipeforattini Aug 17, 2026
e381e04
fix(opencode): brand debug version Redcode Refs #39
filipeforattini Aug 17, 2026
6da5eb4
fix(opencode): clarify provider login help Refs #39
filipeforattini Aug 17, 2026
2bd04c0
fix(opencode): identify default agent as Redcode Refs #39
filipeforattini Aug 17, 2026
4845195
fix(opencode): identify Trinity agent as Redcode Refs #39
filipeforattini Aug 17, 2026
cdbb6c1
fix(opencode): identify Beast agent as Redcode Refs #39
filipeforattini Aug 17, 2026
7659e6f
fix(opencode): identify GPT agent as Redcode Refs #39
filipeforattini Aug 17, 2026
195d535
fix(opencode): identify Copilot agent as Redcode Refs #39
filipeforattini Aug 17, 2026
6307c1e
fix(opencode): identify Gemini agent as Redcode Refs #39
filipeforattini Aug 17, 2026
fe66664
fix(opencode): identify Kimi agent as Redcode Refs #39
filipeforattini Aug 17, 2026
4f609c2
fix(opencode): identify Meta agent as Redcode Refs #39
filipeforattini Aug 17, 2026
612f27b
fix(opencode): identify Anthropic agent as Redcode Refs #39
filipeforattini Aug 17, 2026
d9393b4
fix(opencode): identify Codex agent as Redcode Refs #39
filipeforattini Aug 17, 2026
af92e75
chore(opencode): document Redcode identity changes Refs #39
filipeforattini Aug 17, 2026
b75963d
test(cli): update Redcode help snapshots
filipeforattini Aug 17, 2026
6471136
Merge branch 'main' into afk/39-finish-redcode-identity-and-make-session
filipeforattini Aug 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/truthful-redcode-shell.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"opencode": patch
---

Finish Redcode branding across terminal surfaces and keep generated session titles focused on user intent instead of unsupported repository findings.
4 changes: 4 additions & 0 deletions packages/opencode/src/agent/prompt/title.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ Your output must be:
- Title must be grammatically correct and read naturally - no word salad
- Never include tool names in the title (e.g. "read tool", "bash tool", "edit tool")
- Focus on the main topic or question the user needs to retrieve
- Write a neutral conversation label, not a status report, conclusion, or repository health finding
- Describe only the user's stated intent, request, question, or topic
- Never claim that a problem was found, detected, fixed, verified, or diagnosed unless the user explicitly stated that outcome
- Do not infer bugs, vulnerabilities, failures, or other repository conditions from a request to inspect or change something
- Vary your phrasing - avoid repetitive patterns like always starting with "Analyzing"
- When a file is mentioned, focus on WHAT the user wants to do WITH the file, not just that they shared it
- Keep exact: technical terms, numbers, filenames, HTTP codes
Expand Down
2 changes: 1 addition & 1 deletion packages/opencode/src/cli/cmd/attach.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { ServerAuth } from "@/server/auth"

export const AttachCommand = cmd({
command: "attach <url>",
describe: "attach to a running opencode server",
describe: "attach to a running Redcode server",
builder: (yargs) =>
yargs
.positional("url", {
Expand Down
2 changes: 1 addition & 1 deletion packages/opencode/src/cli/cmd/debug/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ const InfoCommand = effectCmd({
: undefined
const terminal = [termProgram, process.env.TERM].filter((item): item is string => Boolean(item)).join(" / ")

console.log(`opencode version: ${InstallationVersion}`)
console.log(`Redcode version: ${InstallationVersion}`)
console.log(`os: ${os.type()} ${os.release()} ${os.arch()}`)
console.log(`terminal: ${terminal || "unknown"}`)
console.log("plugins:")
Expand Down
4 changes: 2 additions & 2 deletions packages/opencode/src/cli/cmd/mcp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ export const McpListCommand = effectCmd({

if (servers.length === 0) {
prompts.log.warn("No MCP servers configured")
prompts.outro("Add servers with: opencode mcp add")
prompts.outro("Add servers with: redcode mcp add")
return
}

Expand Down Expand Up @@ -563,7 +563,7 @@ export const McpAddCommand = effectCmd({
if (type === "local") {
const command = await prompts.text({
message: "Enter command to run",
placeholder: "e.g., opencode x @modelcontextprotocol/server-filesystem",
placeholder: "e.g., redcode x @modelcontextprotocol/server-filesystem",
validate: (x) => (x && x.length > 0 ? undefined : "Required"),
})
if (prompts.isCancel(command)) throw new UI.CancelledError()
Expand Down
12 changes: 6 additions & 6 deletions packages/opencode/src/cli/cmd/pr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { Process } from "@/util/process"

export const PrCommand = effectCmd({
command: "pr <number>",
describe: "fetch and checkout a GitHub PR branch, then run opencode",
describe: "fetch and checkout a GitHub PR branch, then run Redcode",
builder: (yargs) =>
yargs.positional("number", {
type: "number",
Expand Down Expand Up @@ -76,11 +76,11 @@ export const PrCommand = effectCmd({
const sessionMatch = prInfo.body.match(/https:\/\/opncd\.ai\/s\/([a-zA-Z0-9_-]+)/)
if (sessionMatch) {
const sessionUrl = sessionMatch[0]
UI.println(`Found opencode session: ${sessionUrl}`)
UI.println(`Found Redcode session: ${sessionUrl}`)
UI.println(`Importing session...`)

const importResult = yield* Effect.promise(() =>
Process.text(["opencode", "import", sessionUrl], { nothrow: true }),
Process.text(["redcode", "import", sessionUrl], { nothrow: true }),
)
if (importResult.code === 0) {
const sessionIdMatch = importResult.text.trim().match(/Imported session: ([a-zA-Z0-9_-]+)/)
Expand All @@ -95,13 +95,13 @@ export const PrCommand = effectCmd({

UI.println(`Successfully checked out PR #${prNumber} as branch '${localBranchName}'`)
UI.println()
UI.println("Starting opencode...")
UI.println("Starting Redcode...")
UI.println()

const opencodeArgs = sessionId ? ["-s", sessionId] : []
const code = yield* Effect.promise(
() =>
Process.spawn(["opencode", ...opencodeArgs], {
Process.spawn(["redcode", ...opencodeArgs], {
stdin: "inherit",
stdout: "inherit",
stderr: "inherit",
Expand All @@ -110,6 +110,6 @@ export const PrCommand = effectCmd({
)
// Match legacy throw semantics — propagate as a defect so the top-level
// index.ts catch handles it identically (exit 1, "Unexpected error" banner).
if (code !== 0) return yield* Effect.die(new Error(`opencode exited with code ${code}`))
if (code !== 0) return yield* Effect.die(new Error(`Redcode exited with code ${code}`))
}),
})
2 changes: 1 addition & 1 deletion packages/opencode/src/cli/cmd/providers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,7 @@ export const ProvidersLoginCommand = effectCmd({
builder: (yargs: Argv) =>
yargs
.positional("url", {
describe: "opencode auth provider",
describe: "provider authentication URL",
type: "string",
})
.option("provider", {
Expand Down
4 changes: 2 additions & 2 deletions packages/opencode/src/cli/cmd/run.ts
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ async function toolError(part: ToolPart) {

export const RunCommand = effectCmd({
command: "run [message..]",
describe: "run opencode with a message",
describe: "run Redcode with a message",
// --attach connects to a remote server (no local instance needed); the
// default path runs an in-process server and needs the project instance.
instance: (args) => !args.attach,
Expand Down Expand Up @@ -190,7 +190,7 @@ export const RunCommand = effectCmd({
})
.option("attach", {
type: "string",
describe: "attach to a running opencode server (e.g., http://localhost:4096)",
describe: "attach to a running Redcode server (e.g., http://localhost:4096)",
})
.option("password", {
alias: ["p"],
Expand Down
4 changes: 2 additions & 2 deletions packages/opencode/src/cli/cmd/run/footer.permission.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ export function RejectField(props: {
minHeight={1}
maxHeight={3}
wrapMode="word"
placeholder="Tell OpenCode what to do differently"
placeholder="Tell Redcode what to do differently"
placeholderColor={props.theme.muted}
textColor={props.theme.text}
focusedTextColor={props.theme.text}
Expand Down Expand Up @@ -284,7 +284,7 @@ export function RunPermissionBody(props: {
</Match>
<Match when={state().stage === "reject"}>
<box paddingLeft={1}>
<text fg={props.theme.muted}>Tell OpenCode what to do differently</text>
<text fg={props.theme.muted}>Tell Redcode what to do differently</text>
</box>
</Match>
</Switch>
Expand Down
2 changes: 1 addition & 1 deletion packages/opencode/src/cli/cmd/run/footer.prompt.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -417,7 +417,7 @@ export function createPromptState(input: PromptInput): PromptState {
description: "compose in your external editor",
} satisfies SlashOption,
{ kind: "slash", name: "new", display: "/new", description: "start a new session" } satisfies SlashOption,
{ kind: "slash", name: "exit", display: "/exit", description: "close OpenCode" } satisfies SlashOption,
{ kind: "slash", name: "exit", display: "/exit", description: "close Redcode" } satisfies SlashOption,
]
const hidden = new Set(builtins.map((item) => item.name))
const showSkillMenu = !shell() && skillCommands().length > 0 && !hasSkillsCommand()
Expand Down
4 changes: 2 additions & 2 deletions packages/opencode/src/cli/cmd/run/permission.shared.ts
Original file line number Diff line number Diff line change
Expand Up @@ -125,11 +125,11 @@ export function permissionInfo(request: PermissionRequest): PermissionInfo {

export function permissionAlwaysLines(request: PermissionRequest): string[] {
if (request.always.length === 1 && request.always[0] === "*") {
return [`This will allow ${request.permission} until OpenCode is restarted.`]
return [`This will allow ${request.permission} until Redcode is restarted.`]
}

return [
"This will allow the following patterns until OpenCode is restarted.",
"This will allow the following patterns until Redcode is restarted.",
...request.always.map((item) => `- ${item}`),
]
}
Expand Down
4 changes: 2 additions & 2 deletions packages/opencode/src/cli/cmd/run/splash.ts
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ function build(input: SplashWriterInput, kind: "entry" | "exit", ctx: Scrollback
})
}

push(lines, body_left, top, "OpenCode", right, undefined, TextAttributes.BOLD)
push(lines, body_left, top, "Redcode", right, undefined, TextAttributes.BOLD)
if (input.detail) {
push(
lines,
Expand Down Expand Up @@ -234,7 +234,7 @@ function build(input: SplashWriterInput, kind: "entry" | "exit", ctx: Scrollback
lines,
body_left + label.length,
top + 1,
`opencode --mini -s ${meta.session_id}`,
`redcode --mini -s ${meta.session_id}`,
right,
undefined,
TextAttributes.BOLD,
Expand Down
4 changes: 2 additions & 2 deletions packages/opencode/src/cli/cmd/serve.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { Flag } from "@opencode-ai/core/flag/flag"
export const ServeCommand = effectCmd({
command: "serve",
builder: (yargs) => withNetworkOptions(yargs),
describe: "starts a headless opencode server",
describe: "starts a headless Redcode server",
// Server loads instances per-request via x-opencode-directory header — no
// need for an ambient project InstanceContext at startup.
instance: false,
Expand All @@ -17,7 +17,7 @@ export const ServeCommand = effectCmd({
}
const opts = yield* resolveNetworkOptions(args)
const server = yield* Effect.promise(() => Server.listen(opts))
console.log(`opencode server listening on http://${server.hostname}:${server.port}`)
console.log(`Redcode server listening on http://${server.hostname}:${server.port}`)

yield* Effect.never
}),
Expand Down
4 changes: 2 additions & 2 deletions packages/opencode/src/cli/cmd/tui.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,12 @@ export async function resolveStartupSession(input: {

export const TuiThreadCommand = cmd({
command: "$0 [project]",
describe: "start opencode tui",
describe: "start Redcode TUI",
builder: (yargs) =>
withNetworkOptions(yargs)
.positional("project", {
type: "string",
describe: "path to start opencode in",
describe: "path to start Redcode in",
})
.option("model", {
type: "string",
Expand Down
2 changes: 1 addition & 1 deletion packages/opencode/src/cli/cmd/web.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ function getNetworkIPs() {
export const WebCommand = effectCmd({
command: "web",
builder: (yargs) => withNetworkOptions(yargs),
describe: "start opencode server and open web interface",
describe: "start Redcode server and open web interface",
// Server loads instances per-request via x-opencode-directory header — no
// ambient project InstanceContext needed at startup.
instance: false,
Expand Down
8 changes: 4 additions & 4 deletions packages/opencode/src/cli/error.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ export function FormatError(input: unknown): string | undefined {
// MCPFailed: { name: string }
if (NamedError.hasName(input, "MCPFailed")) {
const data = isRecord(input) && isRecord(input.data) ? stringField(input.data, "name") : undefined
return `MCP server "${data}" failed. Note, opencode does not support MCP authentication yet.`
return `MCP server "${data}" failed. Note, Redcode does not support MCP authentication yet.`
}

// AccountServiceError, AccountTransportError: TaggedErrorClass
Expand All @@ -64,8 +64,8 @@ export function FormatError(input: unknown): string | undefined {
return [
`Model not found: ${stringField(providerModelNotFound, "providerID")}/${stringField(providerModelNotFound, "modelID")}`,
...(suggestions.length ? ["Did you mean: " + suggestions.join(", ")] : []),
`Try: \`opencode models\` to list available models`,
`Or check your config (opencode.json) provider/model names`,
`Try: \`redcode models\` to list available models`,
`Or check your config (redcode.json) provider/model names`,
].join("\n")
}

Expand Down Expand Up @@ -102,7 +102,7 @@ export function FormatError(input: unknown): string | undefined {
return [
`Failed to load remote config${remote ? ` from ${remote}` : ""}: the server returned a login page instead of JSON.`,
`Authentication is missing or has expired (the endpoint is likely behind an SSO or identity-aware proxy).`,
...(url ? [`Run \`opencode auth login ${url}\` to re-authenticate.`] : []),
...(url ? [`Run \`redcode auth login ${url}\` to re-authenticate.`] : []),
].join("\n")
}

Expand Down
8 changes: 4 additions & 4 deletions packages/opencode/src/session/prompt/anthropic.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
You are OpenCode, the best coding agent on the planet.
You are Redcode, a coding agent that helps users accomplish software engineering tasks.

You are an interactive CLI tool that helps users with software engineering tasks. Use the instructions below and the tools available to you to assist the user.

Expand All @@ -7,9 +7,9 @@ IMPORTANT: You must NEVER generate or guess URLs for the user unless you are con
If the user asks for help or wants to give feedback inform them of the following:
- ctrl+p to list available actions
- To give feedback, users should report the issue at
https://github.com/anomalyco/opencode
https://github.com/reddb-io/redcode

When the user directly asks about OpenCode (eg. "can OpenCode do...", "does OpenCode have..."), or asks in second person (eg. "are you able...", "can you do..."), or asks how to use a specific OpenCode feature (eg. implement a hook, write a slash command, or install an MCP server), use the WebFetch tool to gather information to answer the question from OpenCode docs. The list of available docs is available at https://opencode.ai/docs
When the user directly asks about Redcode (eg. "can Redcode do...", "does Redcode have..."), or asks in second person (eg. "are you able...", "can you do..."), or asks how to use a specific Redcode feature (eg. implement a hook, write a slash command, or install an MCP server), use the WebFetch tool to gather information from the upstream docs. The list of available docs is available at https://opencode.ai/docs

# Tone and style
- Only use emojis if the user explicitly requests it. Avoid using emojis in all communication unless asked.
Expand All @@ -18,7 +18,7 @@ When the user directly asks about OpenCode (eg. "can OpenCode do...", "does Open
- NEVER create files unless they're absolutely necessary for achieving your goal. ALWAYS prefer editing an existing file to creating a new one. This includes markdown files.

# Professional objectivity
Prioritize technical accuracy and truthfulness over validating the user's beliefs. Focus on facts and problem-solving, providing direct, objective technical info without any unnecessary superlatives, praise, or emotional validation. It is best for the user if OpenCode honestly applies the same rigorous standards to all ideas and disagrees when necessary, even if it may not be what the user wants to hear. Objective guidance and respectful correction are more valuable than false agreement. Whenever there is uncertainty, it's best to investigate to find the truth first rather than instinctively confirming the user's beliefs.
Prioritize technical accuracy and truthfulness over validating the user's beliefs. Focus on facts and problem-solving, providing direct, objective technical info without any unnecessary superlatives, praise, or emotional validation. It is best for the user if Redcode honestly applies the same rigorous standards to all ideas and disagrees when necessary, even if it may not be what the user wants to hear. Objective guidance and respectful correction are more valuable than false agreement. Whenever there is uncertainty, it's best to investigate to find the truth first rather than instinctively confirming the user's beliefs.

# Task Management
You have access to the TodoWrite tools to help you manage and plan tasks. Use these tools VERY frequently to ensure that you are tracking your tasks and giving the user visibility into your progress.
Expand Down
2 changes: 1 addition & 1 deletion packages/opencode/src/session/prompt/beast.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
You are opencode, an agent - please keep going until the user’s query is completely resolved, before ending your turn and yielding back to the user.
You are Redcode, an agent - please keep going until the user’s query is completely resolved, before ending your turn and yielding back to the user.

Your thinking should be thorough and so it's fine if it's very long. However, avoid unnecessary repetition and verbosity. You should be concise, but thorough.

Expand Down
2 changes: 1 addition & 1 deletion packages/opencode/src/session/prompt/codex.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
You are OpenCode, the best coding agent on the planet.
You are Redcode, a coding agent that helps users accomplish software engineering tasks.

You are an interactive CLI tool that helps users with software engineering tasks. Use the instructions below and the tools available to you to assist the user.

Expand Down
2 changes: 1 addition & 1 deletion packages/opencode/src/session/prompt/copilot-gpt-5.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
You are an expert AI programming assistant
Your name is opencode
Your name is Redcode
Keep your answers short and impersonal.
<gptAgentInstructions>
You are a highly sophisticated coding agent with expert-level knowledge across programming languages and frameworks.
Expand Down
8 changes: 4 additions & 4 deletions packages/opencode/src/session/prompt/default.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
You are opencode, an interactive CLI tool that helps users with software engineering tasks. Use the instructions below and the tools available to you to assist the user.
You are Redcode, an interactive CLI tool that helps users with software engineering tasks. Use the instructions below and the tools available to you to assist the user.

IMPORTANT: You must NEVER generate or guess URLs for the user unless you are confident that the URLs are for helping the user with programming. You may use URLs provided by the user in their messages or local files.

If the user asks for help or wants to give feedback inform them of the following:
- /help: Get help with using opencode
- To give feedback, users should report the issue at https://github.com/anomalyco/opencode/issues
- /help: Get help with using Redcode
- To give feedback, users should report the issue at https://github.com/reddb-io/redcode/issues

When the user directly asks about opencode (eg 'can opencode do...', 'does opencode have...') or asks in second person (eg 'are you able...', 'can you do...'), first use the WebFetch tool to gather information to answer the question from opencode docs at https://opencode.ai
When the user directly asks about Redcode (eg 'can Redcode do...', 'does Redcode have...') or asks in second person (eg 'are you able...', 'can you do...'), first use the WebFetch tool to gather information to answer the question from the upstream docs at https://opencode.ai

# Tone and style
You should be concise, direct, and to the point. When you run a non-trivial bash command, you should explain what the command does and why you are running it, to make sure the user understands what you are doing (this is especially important when you are running a command that will make changes to the user's system).
Expand Down
2 changes: 1 addition & 1 deletion packages/opencode/src/session/prompt/gemini.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
You are opencode, an interactive CLI agent specializing in software engineering tasks. Your primary goal is to help users safely and efficiently, adhering strictly to the following instructions and utilizing your available tools.
You are Redcode, an interactive CLI agent specializing in software engineering tasks. Your primary goal is to help users safely and efficiently, adhering strictly to the following instructions and utilizing your available tools.

# Core Mandates

Expand Down
2 changes: 1 addition & 1 deletion packages/opencode/src/session/prompt/gpt.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
You are OpenCode, You and the user share the same workspace and collaborate to achieve the user's goals.
You are Redcode. You and the user share the same workspace and collaborate to achieve the user's goals.

You are a deeply pragmatic, effective software engineer. You take engineering quality seriously, and collaboration comes through as direct, factual statements. You communicate efficiently, keeping the user clearly informed about ongoing actions without unnecessary detail. You build context by examining the codebase first without making assumptions or jumping to conclusions. You think through the nuances of the code you encounter, and embody the mentality of a skilled senior software engineer.

Expand Down
2 changes: 1 addition & 1 deletion packages/opencode/src/session/prompt/kimi.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
You are OpenCode, an interactive general AI agent running on a user's computer.
You are Redcode, an interactive general AI agent running on a user's computer.

Your primary goal is to help users with software engineering tasks by taking action — use the tools available to you to make real changes on the user's system. You should also answer questions when asked. Always adhere strictly to the following system instructions and the user's requirements.

Expand Down
Loading
Loading