Skip to content

Feature: Fuzzy file search#348

Closed
chriswritescode-dev wants to merge 3 commits into
anomalyco:devfrom
chriswritescode-dev:fuzzy-file
Closed

Feature: Fuzzy file search#348
chriswritescode-dev wants to merge 3 commits into
anomalyco:devfrom
chriswritescode-dev:fuzzy-file

Conversation

@chriswritescode-dev

Copy link
Copy Markdown

No description provided.

@adamdotdevin

Copy link
Copy Markdown
Member

hey, thanks a ton for working on this, definitely a feature we're keen to add. the main issue with this implementation is that we'll want this functionality largely exposed through the server so that non-tui clients can also leverage it. i'm not entirely sure what that will look like just yet, haven't put much thought into it, but first thought was that we'd modify the session_chat route to accept file paths for adding to context. we'll also be adding symbols, though, so maybe needs to be more broad than that.

@chriswritescode-dev

Copy link
Copy Markdown
Author

hey, thanks a ton for working on this, definitely a feature we're keen to add. the main issue with this implementation is that we'll want this functionality largely exposed through the server so that non-tui clients can also leverage it. i'm not entirely sure what that will look like just yet, haven't put much thought into it, but first thought was that we'd modify the session_chat route to accept file paths for adding to context. we'll also be adding symbols, though, so maybe needs to be more broad than that.

I see, this needs to be exposed in the ts server. I completely overlooked that.

@thdxr
thdxr requested a review from adamdotdevin June 24, 2025 15:21
@chriswritescode-dev
chriswritescode-dev deleted the fuzzy-file branch November 15, 2025 22:00
andreipromarketing-dev pushed a commit to andreipromarketing-dev/opencode that referenced this pull request Apr 7, 2026
* fix(hooks): scrub secrets and harden hook security

- Scrub common secret patterns (api_key, token, password, etc.) from
  observation logs before persisting to JSONL (observe.sh)
- Auto-purge observation files older than 30 days (observe.sh)
- Strip embedded credentials from git remote URLs before saving to
  projects.json (detect-project.sh)
- Add command prefix allowlist to runCommand — only git, node, npx,
  which, where are permitted (utils.js)
- Sanitize CLAUDE_SESSION_ID in temp file paths to prevent path
  traversal (suggest-compact.js)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(hooks): address review feedback from CodeRabbit and Cubic

- Reject shell command-chaining operators (;|&`) in runCommand, strip
  quoted sections before checking to avoid false positives (utils.js)
- Remove command string from blocked error message to avoid leaking
  secrets (utils.js)
- Fix Python regex quoting: switch outer shell string from double to
  single quotes so regex compiles correctly (observe.sh)
- Add optional auth scheme match (Bearer, Basic) to secret scrubber
  regex (observe.sh)
- Scope auto-purge to current project dir and match only archived
  files (observations-*.jsonl), not live queue (observe.sh)
- Add second fallback after session ID sanitization to prevent empty
  string (suggest-compact.js)
- Preserve backward compatibility when credential stripping changes
  project hash — detect and migrate legacy directories
  (detect-project.sh)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(hooks): block $() substitution, fix Bearer redaction, add security tests

- Add $ and \n to blocked shell metacharacters in runCommand to prevent
  command substitution via $(cmd) and newline injection (utils.js)
- Make auth scheme group capturing so Bearer/Basic is preserved in
  redacted output instead of being silently dropped (observe.sh)
- Add 10 unit tests covering runCommand allowlist blocking (rm, curl,
  bash prefixes) and metacharacter rejection (;|&`$ chaining), plus
  error message leak prevention (utils.test.js)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(hooks): scrub parse-error fallback, strengthen security tests

Address remaining reviewer feedback from CodeRabbit and Cubic:

- Scrub secrets in observe.sh parse-error fallback path (was writing
  raw unsanitized input to observations file)
- Remove redundant re.IGNORECASE flag ((?i) inline flag already set)
- Add inline comment documenting quote-stripping limitation trade-off
- Fix misleading test name for error-output test
- Add 5 new security tests: single-quote passthrough, mixed
  quoted+unquoted metacharacters, prefix boundary (no trailing space),
  npx acceptance, and newline injection
- Improve existing quoted-metacharacter test to actually exercise
  quote-stripping logic

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(security): block $() and backtick inside quotes in runCommand

Shell evaluates $() and backticks inside double quotes, so checking
only the unquoted portion was insufficient. Now $ and ` are rejected
anywhere in the command string, while ; | & remain quote-aware.

Addresses CodeRabbit and Cubic review feedback on PR anomalyco#348.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants