fix(cortexide): Phase 0 stabilization — open issues #8–#67#69
Merged
Conversation
…mory
Implements three verified items from the competitive roadmap. All changes are
tsgo-clean, pass the node test suite, and are hygiene-safe (ASCII-only added lines).
- Secret redaction at the single outbound dispatch boundary. New pure, unit-tested
common/outboundRedaction.ts scans every text-bearing payload: chat string/array
content, tool_result content (e.g. `cat .env` output routed back to the model),
Gemini parts, AND FIM/autocomplete prefix/suffix. Previously only chatMessages
text parts were scanned, so autocomplete and terminal-tool output shipped raw to
cloud providers -- making "never leaks a secret" false in production.
run_command/run_persistent_command output is also masked at the source.
- Atomic audit-log writes. auditLogService.ts now writes via temp+rename
({ atomic: { postfix } }) for append, rotation, and truncate, so a crash
mid-write can no longer corrupt the entire append-only audit trail. Adds the
first service-level test (in-memory file service) pinning the atomic option,
append/read round-trip, and crash-truncated-tail tolerance.
- Agent working memory. Re-inject the todo_write list into the per-turn
instructions (new pure, tested common/todoReminder.ts) -- folded like rules,
not into the cached system message, so it stays current. getLatestTodos
previously had zero consumers, so the agent could never read back its own plan.
New tests: outboundRedaction, todoReminder, auditLogService (atomic append).
The Open VSX extension gallery enablement lives in the cortexide-builder repo
(prepare_vscode.sh); it is injected at build time because the OSS hygiene check
forbids extensionsGallery in product.json.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…nation/redaction) Adds the building block of the tamper-evident egress ledger -- a complete record of every outbound LLM call (allowed AND blocked): provider, destination kind (loopback/ remote/private/unknown), whether it leaves the machine, the gate's allow/block decision + reason, and whether a secret was redacted from the payload. - New pure, unit-tested common/egressAudit.ts (buildEgressAuditEvent) reuses the SAME classification the egress gate enforces (classifyProviderDestination + canDispatchToProvider), so the ledger never disagrees with what actually happened. - AuditEvent gains an 'egress' action. - sendLLMMessageService appends one egress event per dispatch (chat + autocomplete), gated behind the opt-in audit log, fire-and-forget. Reuses the redactionApplied signal from the outbound-redaction pass. This is the "verify us, don't trust us" auditability differentiator -- neither Cursor nor Claude Code exposes a per-request egress ledger. Wiring the remaining chokepoints (web-tool, MCP-URL, model-catalog) is a follow-up. New tests: egressAudit. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Restore menubar dropdowns, wire Add File to Chat to CortexIDE staging, and prevent duplicate native tool payloads for local inference. Includes URI.revive storage reviver, UI polish, and unit tests. Co-authored-by: Cursor <cursoragent@cursor.com>
Fix Void install path conflicts, llama-server onboarding, Ollama IPC freeze, theme scoping, v0 multimodal routing, autocomplete defaults, and onboarding UI. Includes provider validation helpers and unit tests. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
This was referenced Jul 22, 2026
Closed
Closed
Closed
Closed
Closed
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.
Summary
Phase 0 stabilization across two sprints, fixing the highest-impact open GitHub issues for CortexIDE first-run experience, local inference, and theme/onboarding polish.
Sprint 1 (
4b9d607)cortexide.attachFileToChat)tools[]+ XML tool definitions for local/llama.cpp inference (effectiveSpecialToolFormat)URI.revivechat thread storage reviver; UI focus-ring and SidebarChat className fixesSprint 2 (
961f54c).cortexide/CortexIDEpaths (not Void); blacklist Void AI extensionsopenai-stylemultimodal formatstartWizard(),setDefaults()configures Chat + AutocompleteTests
72 unit tests passing for new/changed modules:
providerSettingsValidation,onboardingHelpers,attachFileToChat,chatThreadStorageReviver,providerToolFormat, v0 detection inmodelCapabilitiesTest plan
.cortexide, not.void-editorMade with Cursor