Skip to content

Instantly share code, notes, and snippets.

@david-crespo
Last active December 16, 2025 18:06
Show Gist options
  • Select an option

  • Save david-crespo/5c5eaf36a2d20be8a3013ba3c7c265d9 to your computer and use it in GitHub Desktop.

Select an option

Save david-crespo/5c5eaf36a2d20be8a3013ba3c7c265d9 to your computer and use it in GitHub Desktop.
Oxide's internal tips on LLM use

LLMs at Oxide

Oxide pays for your LLM use through a company account. If you don't know what to use, use Claude Code in the terminal or in VS Code. We also have an OpenAI account if you want to try their Codex product.

Getting started with Claude Code

(Logistics elided.)

What to try first?

Run Claude Code in a repo (whether you know it well or not) and ask a question about how something works. You'll see how it looks through the files to find the answer.

The next thing to try is a code change where you know exactly what you want but it's tedious to type. Describe it in detail and let Claude figure it out. If there is similar code that it should follow, tell it so. From there, you can build intuition about more complex changes that it might be good at.

Usage tips

First of all, read Anthropic's amazing Prompting best practices doc.

Use Sonnet 4.5 or Opus 4.5

Sonnet 4.5 is the default and it is very solid. Opus 4.5 is pretty new as of Dec 2025 and it is clearly even better. They cut the price of Opus by 2/3 with 4.5 ($5/M input, $25/M output), so it is no longer absurdly priced compared to Sonnet ($3/M input, $15/M output). They claim the higher price may actually net out because it uses fewer tokens, perhaps because it is less likely to waste time on wrong directions.

Claude Code sometimes automatically uses the cheaper, faster Haiku 4.5 for subtasks like exploring a codebase. You can set it as the main model for the chat with /model, but the speed/intelligence tradeoff isn't worth it. There is also Sonnet 4.5 with a 1M context window available, but long context weakens performance substantially, so you are almost certainly better off managing your context to make it fit in 200k.

Use ! to pass Claude the output of shell commands

While you can tell Claude to run a command, it's a lot simpler and quicker to use ! to run it yourself. This is equivalent to running the command in another terminal and pasting the output into the chat. You can use this a million ways, but here are a few examples:

  • !cargo nextest run <test_name> followed by "why is this test failing?"
  • !cargo check followed by "fix this"
  • Stub out functions by hand, then use !jj diff or !git diff to give Claude the work so far and say "complete these functions" (with more detail, see tip below)

Prompt with as much detail as possible

We've learned through decades of experience with search engines to be very careful about what we type into a prompt. This is the opposite of what you want with LLMs — they are capable of pulling nuance out of everything you say. So instead of figuring out the shortest prompt that will do the thing, ramble about the problem, tradeoffs, your hopes and fears, etc. Dictation software like MacWhisper is great for this.

A couple of caveats:

  • When I say "prompt" here, I am talking about the prompting you write by hand in natural language, which is hard to overdo because it's naturally small. It is possible to overdo filling the context window up with, e.g., log files.
  • This assumes you have enough experience for your rambling to have a good signal to noise ratio. Beginners can take the rambling approach too, but they will likely need to spend more time refining the plan.

Don't compact, don't argue. Just start over.

As the chat goes on, each message gets more expensive while Claude gets dumber. That's a bad trade, especially if what's filling up the context is a bunch of fighting about what you don't want Claude to do. Use /context and /cost or the ccusage statusline trick to keep an eye on your context window. CC natively gives a percentage but it's sort of fake because it includes a large buffer of empty space to use for compacting.

Compacting tells Claude to reduce size of the conversation so far by summarizing the key points and replacing the chat history with the summary. The problem is that compacting often doesn't actually shrink the context enough because it keeps a ton of irrelevant stuff. This is all noise that can throw Claude off.

Instead, figure out what you want to save from the current conversation and use /reset or /new to start over with an empty context window. A simple approach: have Claude maintain a PLAN.md as it works, then start fresh with just that file and the diff so far.

The Anthropic people call this "multi-context window workflows", which is a horrible name, but the practice is really useful and surprisingly few CC users seem to know about it.

Track cost in real time with ccusage

Spending too much is a good sign that Claude is spinning its wheels and you should think about how to prompt it better. By default, the TUI does not want to show you what you're spending in real time — you have to run /cost manually to see it. Add this to ~/.claude/settings.json for a statusline at the bottom showing real-time session cost:

"statusLine": {
  "type": "command",
  "command": "npx ccusage@latest statusline"
}
image

Run npx ccusage in the terminal to see daily/weekly/monthly usage tables.

Usage-based (API key) billing

We are trying usage-based billing rather than monthly subscription plans. It's cheaper (CC team is $150 per seat) and it's easier to administer because we don't have to worry about who gets a seat. Plus there's no $20 or $50 or $100 psychological hurdle to getting started. Another advantage of pay-as-you-go is that you will virtually never hit rate limits — Anthropic are happy to sell us as much usage as we want to pay for.

Note that this setup does not include a subscription to Claude chat on web/mobile. That would be $25 per seat. You can expense a personal subscription if you want that.

API keys for other tools

Create an API key at https://platform.claude.com/ in the API keys sidebar. Most tools accept it directly or via the ANTHROPIC_API_KEY env var.

Other agentic coding TUIs

OpenAI Codex

GPT-5 is cheaper than Sonnet and quite good, though people seem to generally prefer Claude Code.

(Logistics elided.)

Provider-agnostic tools

OpenCode works with multiple providers, including Cerebras, Groq, DeepSeek, and Moonshot (Kimi K2). It's fun to try other models, but I find myself coming back to Claude Code every time.

Resources

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment