Repository navigation
spec: untrusted-content defense, repository map, debugger tool and transcript search - #77
Merged
Merged
Conversation
… and transcript search Four OpenSpec changes, specification only: - add-untrusted-content-defense (P1): one escape-safe frame for webfetch, websearch, MCP and browser results, hidden-character markers, a deterministic injection detector with notices, and taint-aware approvals for risky actions until the next user prompt. - add-repository-map (P1): tree-sitter symbol map ranked by references, fitted to a per-model budget, as a repo_map tool and an Epoch-pinned Context Source that keeps the cached prefix stable. - add-debugger-tool (P2, feature debugger): DAP debugging through one debug tool, built like the LSP support, gated like bash and run in the Session sandbox; debugpy and lldb-dap first. - add-session-transcript-search (P1, agent tool P2): SQLite FTS5 index over transcripts, kept consistent with deletion, revert and retention; reasoning and opaque state are never indexed. ROADMAP lists each as proposed.
This was referenced Oct 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Four new OpenSpec changes, specification only, plus their ROADMAP entries. Each one closes a gap that is not on the roadmap today.
add-untrusted-content-defense (P1)
New capability
untrusted-content, plus additions topermissions-modesandsystem-context. It implements the existingworkspace-trust→ "Instruction and data provenance" rule for every tool that returns third-party content. Today only MCP resources are framed;webfetch,websearch, MCP tool results and browser pages reach the model bare.<untrusted_content source origin>frame, applied by the tool registry after truncation. It replaces today's<mcp_resource>frames and stays framed when an overflow file is re-read.execand the dashboard. Content is never dropped.dont-askand unattended runs deny instead;bypassshows the notice, or refuses whenbypass: "deny"is set. The settings live underpermissions.untrusted_content, and project config can only make them stricter.add-repository-map (P1)
Additions to
code-intelligence,system-context,provider-catalogandtui;builtin-toolsandconfigurationare modified.cyber-tools. A CI gate fails if the grammars add more than 12 MiB to the binary.repo_map.context_tokensandtool_tokens), capped as a share of the context window.repo_mapis read-only, has the same permission asgrepand works in plan mode.core/repo-map, appears in trusted checkouts only. It never sends mid-conversation updates, so the cached prompt prefix stays byte-stable.cyber lsp mapand/map, and the API sits in the existinglsproute group.add-debugger-tool (P2, experimental feature
debugger)New capability
debugging;builtin-toolsandbackground-tasksare modified, andtuigets one addition. It debugs through the Debug Adapter Protocol, built like the existing LSP support (trusted launch, bounded framing, checkout pins, owned cancellation).debugtool covers launch, breakpoints and logpoints, stepping, waiting for a stop with a timeout, stack frames, bounded variables, evaluate and terminate.debug, with an idle timeout and cleanup when the Session ends or is cancelled.bashpermission on the program's command line and runs inside the Session's sandbox.evaluateand condition expressions ask by default. Attaching is limited to processes in the same Session's Jobs.debugpyandlldb-dap, and.vscode/launch.jsonread-only in trusted checkouts. Delve and js-debug (socket adapters) follow.add-session-transcript-search (P1; agent tool P2)
New capability
session-search, with additions toserver-api,client-sdk,cli-commandsandtui.cyber sessions search,GET /api/v1/sessions/search, the SDKsession.search, and content matches in/resume. Title search is unchanged.session_searchis permission-gated, and its results are framed as untrusted data.Cross-change notes
session_searchresults use theuntrusted-contentframe (source="debug"andsource="session_search").add-repository-map,add-debugger-tooland the existingadd-binary-hex-editoreach modify the shared "Capability-owned tool catalog" list against main. Whichever is archived later keeps every added line.improve-model-protocol-fidelity, so that change is archived first.cybercommands,/api/v1route groups, ID prefixes or top-level config keys. The repository map'srepo_mapkey is the only addition to Top-level keys.Checks
openspec validate --all --strict: 111 passed, 0 failed.python3 scripts/spec_lint.py: 0 errors, 25 warnings, the same as main. It was also run on a scratch copy with the deltas merged in: no new errors, warnings or duplicate requirement names.