# Compiler-accurate context *for C and C++ agents.*

ByteAsk Context reads your project through its real build, so Claude Code knows where a change belongs, what each call resolves to, and what else has to change.

On every plan, Free included. For Claude Code and other MCP clients.

[Set up Context](https://byteask.ai/context#how) [Your account](https://app.byteask.ai)

“Bug report: duplicate packets are sometimes counted as gaps. When seq_no wraps around past 4294967295 back to 1, stats.gaps increments and the duplicate check stops working.”

find_code_for_task # ByteAsk core pack (setting 'default', commit b9fdd0c9eb81, gcc 12.2.0; compiler and build facts, not text search) ## Where the change most likely belongs 1. tbt::FeedHandler::on_packet  - include/tbt/handler.hpp:56-74  `void on_packet(const Packet &pkt)` 2. tbt::FeedHandler::stats  - include/tbt/handler.hpp:92-92  `const HandlerStats &stats() const` 3. tbt::HandlerStats  - include/tbt/handler.hpp:25-36 ## The code of 1 (include/tbt/handler.hpp; line numbers are the file's)  56  void on_packet(const Packet& pkt) { 57  ++stats_.packets; 58  const wire::StreamHeader& h = pkt.header; 59  if (h.stream_id == 0 || h.stream_id > Venue::kStreams) { ++stats_.bad_stream; return; } 60  61  // Line arbitration upstream can forward the same packet twice. 62  uint32_t& last = last_seq_[h.stream_id]; 63  if (h.seq_no <= last) { ++stats_.duplicates; return; } 64  if (h.seq_no != last + 1) ++stats_.gaps; 65  last = h.seq_no; …## What it calls (overloads as the compiler resolved them) - void on_order(const wire::OrderMsg &m)  - include/tbt/handler.hpp:109 - inline wire::OrderMsg read_order(const uint8_t *body)  - include/tbt/decoder.hpp:23 ## Same shape nearby (often the second place a change needs) - tbt::FeedHandler::Slot::Slot  - include/tbt/handler.hpp:98  `explicit Slot(const Instrument &i)`  (same parameters) ## Test and check - Existing test case of on_packet (new tests go next to it): tests/replay_test.cpp:37 h->on_packet(pkt);

A real answer from ByteAsk to Claude Code on a demo feed-handler repository, trimmed for length.

## What your agent can ask

The index is built from your `compile_commands.json`, so it sees the code your compiler sees.

- **Where does this change belong?:** Places in your code ranked for the task, each with its evidence and the code itself.
- **What does this call actually reach?:** The code and callers of a function, with overloads and template instantiations as the compiler resolved them.
- **What else does this change need?:** The sibling overloads and other call sites a change probably has to touch too.
- **How does fmt do it?:** Search public C and C++ libraries ByteAsk has indexed, such as fmt, abseil and spdlog.

## One prompt to set up. *One small script, checked first.*

Your agent shows every change and the cost before it runs anything.

1. **Paste one prompt:** Your agent registers the ByteAsk MCP server. In Claude Code and Codex it also installs one small hook script after checking its SHA-256, and adds a short instruction block (in `~/.claude/CLAUDE.md` for Claude Code).
2. **Sign in:** Choose Allow for the hook in your browser, restart your agent, then finish its MCP sign-in. In Claude Code: type `/mcp`, pick byteask, choose Authenticate.
3. **Approve what is indexed:** Your agent asks first and previews exactly which files would be uploaded, by folder. Leave any folder out.
4. **Work as usual:** When you describe a bug or change, the hook asks ByteAsk first, so your agent starts from the ranked places. After it edits files, it syncs only the changed ones.

Needs a `compile_commands.json`, a git repository (a remote is optional) and Python 3. Linux and macOS.

```
Set up ByteAsk (https://byteask.ai) for me.

Here are your instructions: https://byteask.ai/agent-guide.txt
Read them in full and follow them step by step.
Ask me what you need in one message, then do the whole setup yourself.
Never spend money without asking me first.
```

[Manual setup](https://byteask.ai/docs/setup/)

Works with

- Claude Code
- Codex
- Cursor
- Windsurf
- VS Code

[Read the setup guide](https://byteask.ai/context/setup)

## What leaves your machine, *and what doesn’t.*

Indexing uploads source files to ByteAsk. Here is exactly which ones, and how to have them deleted.

Before you approve

No code. No code is uploaded until you sign in and approve indexing a repository.

When you type a task

In a C or C++ git repository, the hook sends your request and the repository’s remote address (or, without a remote, its first commit’s id) to ByteAsk before Claude starts, and adds ByteAsk’s answer to Claude’s context. Anywhere else it sends nothing.

When you approve

The files your build reads, uploaded to ByteAsk’s servers: sources, headers, generated headers and the system headers they include. Only from the folders you keep.

Not uploaded

Docs, test data, assets and `.env` files.

After your agent edits

Only the changed files from the list you approved.

Read by a model

To rank where a task’s change belongs, a small OpenAI model reads short excerpts of candidate code through OpenAI’s API. Under OpenAI’s API terms, that data is not used for training.

Deleting

Delete a repository or your whole account any time at [app.byteask.ai](https://app.byteask.ai). Access ends at once and copies are removed.

For companies

A dedicated server, or on-prem. [Contact us](https://byteask.ai/contact).

[Security details in the Trust Center](https://trust.byteask.ai)

## Start on the Free plan. *No card needed.*

To remove it later, run the two commands under [Remove](https://byteask.ai/context/setup#remove) in the setup guide.

[Set up Context](https://byteask.ai/context#how) [Your account](https://app.byteask.ai)

---
HTML version: https://byteask.ai/context
