Skip to content

chore: remove osgrep — disproportionate CPU/disk cost#2168

Merged
marcusquinn merged 1 commit intomainfrom
chore/remove-osgrep
Feb 22, 2026
Merged

chore: remove osgrep — disproportionate CPU/disk cost#2168
marcusquinn merged 1 commit intomainfrom
chore/remove-osgrep

Conversation

@marcusquinn
Copy link
Owner

@marcusquinn marcusquinn commented Feb 22, 2026

Summary

  • Remove osgrep entirely from aidevops — 74GB disk indexes and 4 CPU cores on startup for semantic search that rg + fd + LLM comprehension covers at zero resource cost
  • Add one-time cleanup_osgrep migration that runs on next aidevops update to uninstall the npm package, remove ~/.osgrep/ (74GB), and clean MCP configs from OpenCode/Claude Code settings
  • Update code search priority: rg/fd primary, Augment Context Engine for semantic, Glob as last resort

Changes

Deleted (3 files):

  • .agents/tools/context/osgrep.md — subagent doc
  • configs/mcp-templates/osgrep.json — MCP template
  • configs/osgrep-config.json.txt — config template

Infrastructure (critical path):

  • setup-modules/migrations.sh — added cleanup_osgrep() function + deprecated path entry
  • setup-modules/mcp-setup.sh — removed setup_osgrep() function
  • setup.sh — removed osgrep setup step
  • .agents/scripts/generate-opencode-agents.sh — removed from EAGER_MCPS, AGENT_TOOLS, DEFAULT_TOOLS; added cleanup of existing configs
  • .agents/scripts/generate-claude-agents.sh — removed MCP registration and plugin enablement
  • .agents/scripts/supervisor/dispatch.sh — removed from worker MCP exclusion lists (no longer needed)
  • .agents/plugins/opencode-aidevops/index.mjs — removed from MCP registry

Docs/Config (34 files total, net -905 lines):

  • Updated prompts, agent docs, README, tests, configs, and all references

Testing

  • All modified shell scripts pass bash -n syntax check
  • All modified shell scripts pass ShellCheck (zero new violations)
  • index.mjs passes node --check
  • Python syntax in generators verified

Summary by CodeRabbit

Release Notes

  • Removals

    • Removed osgrep semantic search tool from the system; no longer available for code searches
    • Removed osgrep from default MCP configurations and setup workflows
  • Updates

    • Revised search recommendations to use rg/fd for local searches and Augment Context Engine for semantic code understanding
    • Updated documentation and onboarding guides to reflect new search tools and workflows
    • Simplified MCP registry by removing osgrep from eager-loaded tools
  • Chores

    • Added migration cleanup to remove osgrep installations and configurations from existing systems
    • Updated internal configuration references and testing mocks

…prehension

osgrep consumed 74GB disk (lancedb indexes) and 4 CPU cores on startup
for semantic search that rg + fd + the LLM itself covers at zero cost.

Removed from: setup, agent generators, dispatch, plugin, prompts, docs,
tests, configs, and all 37 affected files.

Added one-time cleanup migration (cleanup_osgrep) that runs on next
aidevops update to: uninstall npm package, remove ~/.osgrep/ indexes,
clean MCP configs from OpenCode and Claude Code settings, and remove
per-repo .osgrep directories.
@marcusquinn marcusquinn merged commit 412b81b into main Feb 22, 2026
7 of 9 checks passed
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 22, 2026

Caution

Review failed

The pull request is closed.

Walkthrough

Deprecates and removes osgrep (a local semantic search MCP) from the entire codebase, replacing it with rg/fd for exact-match searching and augment-context-engine for semantic search. Updates documentation, configuration, setup scripts, agent generation logic, and test files to remove osgrep references and add cleanup/migration functions.

Changes

Cohort / File(s) Summary
Documentation Cleanup
.agents/aidevops/*.md, .agents/tools/context/*.md, .agents/tools/wordpress/wp-dev.md, .agents/tools/ai-assistants/claude-code.md, .agents/tools/build-mcp/aidevops-plugin.md, README.md
Removed osgrep references, updated tool recommendations from osgrep to rg/fd for exact matching and augment-context-engine for semantic search. Updated architecture, onboarding, troubleshooting, and tool comparison documentation.
MCP Configuration Removal
configs/mcp-servers-config.json.txt, configs/mcp-templates/osgrep.json, configs/osgrep-config.json.txt
Deleted osgrep MCP server entry and entire config templates for osgrep integrations across multiple editors and environments.
Agent Generation & MCP Loading
.agents/scripts/generate-opencode-agents.sh, .agents/plugins/opencode-aidevops/index.mjs, .agents/scripts/generate-claude-agents.sh
Removed osgrep MCP registration, eager-loading configuration, and plugin enablement. Updated MCP registry examples and policy documentation to reflect all MCPs as lazy-loaded.
Setup & Migration Functions
setup-modules/mcp-setup.sh, setup-modules/migrations.sh, setup.sh
Removed setup_osgrep() function. Added comprehensive cleanup_osgrep() migration function to uninstall packages, remove data directories (~74GB), and purge osgrep references from multiple config files.
Diagnostic & Helper Scripts
.agents/scripts/mcp-diagnose.sh, .agents/scripts/mcp-index-helper.sh, .agents/scripts/onboarding-helper.sh
Refactored command mapping logic in mcp-diagnose.sh to remove per-MCP case branches. Rewrote mcp-index-helper.sh functions with improved indentation and data handling. Removed osgrep status reporting from onboarding-helper.sh.
Script Utilities
.agents/scripts/auto-update-helper.sh, .agents/scripts/tool-version-check.sh, .agents/scripts/supervisor/dispatch.sh, .agents/scripts/supervisor/utility.sh, .agents/scripts/mcp-register-claude.sh
Removed osgrep from tool freshness coverage, NPM tools array, and worker MCP exclusion logic. Updated comments and usage text to remove osgrep references. Adjusted heavy-indexer handling to exclude only augment-context-engine.
Other Deprecations
.agents/subagent-index.toon, .agents/research.md, .agents/build-plus.md, .agents/prompts/build.txt, .secretlintignore, aidevops.sh, tests/test-dispatch-claude-cli.sh
Removed osgrep dependency tags, subagent references, status checks, tool ignore patterns, and test assertions. Updated code search priority recommendations to prioritize rg/fd over osgrep.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • #417 — Modifies cleanup_deprecated_paths() flow to remove deprecated artifacts; both PRs add osgrep and oh-my-opencode cleanup functions respectively.
  • #191 — Modifies EAGER/LAZY MCP loading policies and generate-opencode-agents.sh; directly related to osgrep's MCP registration removal.
  • #2102 — Modifies supervisor/dispatch.sh worker MCP config and heavy-indexer exclusion logic; this PR updates the same exclusion handling to remove osgrep.

Suggested labels

cleanup, deprecation, mcp-refactor, shell-script, configuration

Poem

🗑️ Farewell, osgrep, your semantic dreams fade,
rg/fd now lead the exact-match parade,
Augment takes semantic search to new heights,
Cleaner configs, swifter deploys, fewer indexing lights ✨

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/remove-osgrep

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@gemini-code-assist
Copy link

Summary of Changes

Hello @marcusquinn, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request streamlines the system's resource usage by completely deprecating and removing osgrep, a tool previously used for local semantic search. The decision was driven by its significant overhead in terms of disk space and CPU utilization, which was deemed unnecessary given the capabilities of existing tools like rg, fd, and the Augment Context Engine. The changes ensure a cleaner, more efficient environment by integrating a comprehensive cleanup migration and updating all relevant configurations and documentation to reflect the new, optimized code search hierarchy.

Highlights

  • Removal of osgrep: The osgrep tool has been entirely removed from the system due to its disproportionate CPU and disk resource consumption, which included 74GB disk indexes and 4 CPU cores on startup.
  • Migration and Cleanup: A one-time cleanup_osgrep migration has been introduced. This script will automatically uninstall the osgrep npm package, remove the large ~/.osgrep/ data directory, and clean up osgrep-related configurations from OpenCode and Claude Code settings upon the next aidevops update.
  • Updated Code Search Priority: The code search priority has been re-evaluated. rg (ripgrep) and fd are now the primary tools for exact string matching, offering zero resource cost. The Augment Context Engine is designated for semantic search, and Glob remains the last resort.
  • Configuration and Documentation Updates: Numerous configuration files, agent definitions, and documentation across the repository have been updated to reflect the removal of osgrep and the new code search strategy. This includes removing osgrep from agent tool lists, MCP registries, troubleshooting guides, and setup scripts.
Changelog
  • .agents/aidevops/add-new-mcp-to-aidevops.md
    • Removed osgrep specific examples from MCP integration documentation.
  • .agents/aidevops/architecture.md
    • Removed osgrep from the GLOBAL_TOOLS list.
    • Updated the 'Three-tier MCP strategy' to remove osgrep from globally enabled MCPs.
  • .agents/aidevops/mcp-troubleshooting.md
    • Removed the entire osgrep troubleshooting section.
    • Removed osgrep mcp example from direct MCP command testing.
  • .agents/aidevops/onboarding.md
    • Removed osgrep from the list of 'Context Tools'.
    • Removed osgrep from the 'Context Tools' setup table.
  • .agents/build-plus.md
    • Removed osgrep from the list of subagents.
    • Updated the context search priority, replacing osgrep with rg/fd.
  • .agents/plugins/opencode-aidevops/index.mjs
    • Updated toolPattern example from osgrep_* to playwriter_*.
    • Removed osgrep from the eager-loaded MCP registry.
    • Updated comments to reflect that all MCPs are now lazy-loaded, removing the osgrep exception.
  • .agents/prompts/build.txt
    • Updated the 'Code Search Priority' to remove osgrep and reorder grep/rg as primary.
  • .agents/research.md
    • Removed osgrep from the list of subagents under 'Context/docs'.
  • .agents/scripts/auto-update-helper.sh
    • Removed osgrep from the list of npm tools covered by the 6-hourly freshness check.
  • .agents/scripts/generate-claude-agents.sh
    • Removed the logic for registering osgrep as an MCP.
    • Removed the comment about osgrep plugin enablement.
    • Removed the code block responsible for enabling the osgrep plugin in Claude settings.
  • .agents/scripts/generate-opencode-agents.sh
    • Updated comments regarding semantic search, removing osgrep as the primary tool.
    • Removed osgrep_* from the AGENT_TOOLS definitions for various agents (Build+, Onboarding, Accounts, Social-Media, SEO, WordPress, Content, Research).
    • Removed osgrep_* from DEFAULT_TOOLS.
    • Updated EAGER_MCPS to be an empty set, indicating no MCPs are eager-loaded anymore.
    • Added logic to explicitly remove osgrep from the OpenCode MCP configuration if present.
  • .agents/scripts/mcp-diagnose.sh
    • Removed osgrep from the example usage of the script.
    • Removed osgrep from the case statement mapping MCP names to CLI commands.
    • Removed osgrep specific troubleshooting information from the 'Known issues' section.
    • Removed osgrep from the direct MCP command testing section.
  • .agents/scripts/mcp-index-helper.sh
    • Removed osgrep from the tool_categories mapping in the Python script.
    • Removed osgrep from the category derivation logic for context tools.
  • .agents/scripts/mcp-register-claude.sh
    • Removed osgrep from the example usage of the script.
  • .agents/scripts/onboarding-helper.sh
    • Removed the osgrep service check and status reporting.
    • Removed osgrep from the JSON output for installed tools.
  • .agents/scripts/setup/_services.sh
    • Removed the setup_osgrep function entirely.
  • .agents/scripts/supervisor/dispatch.sh
    • Updated comments to generalize heavy indexers instead of specifically mentioning osgrep.
    • Removed osgrep from the jq command that disables heavy indexing MCPs for workers.
    • Updated comments about heavy indexers being filtered out, removing osgrep.
    • Removed osgrep from the excluded_servers array for Claude worker MCP config generation.
    • Updated comments about CPU savings, removing specific mention of osgrep.
  • .agents/scripts/supervisor/utility.sh
    • Removed osgrep indexing from the list of background processes that inflate CPU load averages.
  • .agents/scripts/tool-version-check.sh
    • Removed osgrep from the NPM_TOOLS array.
  • .agents/subagent-index.toon
    • Removed osgrep from the list of context optimization tools.
  • .agents/tools/ai-assistants/claude-code.md
    • Updated the recommendation for quick searches from grep/osgrep to grep/rg.
  • .agents/tools/build-mcp/aidevops-plugin.md
    • Updated toolPattern example from osgrep_* to playwriter_*.
    • Removed osgrep from the MCP table.
    • Updated the eager-loaded policy to state that all MCPs are now lazy-loaded, removing the osgrep exception.
  • .agents/tools/context/augment-context-engine.md
    • Updated the 'Enabled for Agents' description, removing osgrep as a primary tool.
    • Revised the 'Usage Strategy' to remove osgrep as the primary semantic search tool and emphasize rg/fd.
  • .agents/tools/context/llm-tldr.md
    • Removed osgrep from the tool comparison table.
    • Updated the recommendation for finding code, replacing osgrep with rg.
  • .agents/tools/context/mcp-discovery.md
    • Updated the 'When to enable' description for augment-context-engine.
    • Updated the 'Always enabled' section to recommend rg/fd as primary search instead of osgrep.
  • .agents/tools/context/osgrep.md
    • Removed file.
  • .agents/tools/wordpress/wp-dev.md
    • Replaced the osgrep example with rg for code analysis.
  • .secretlintignore
    • Removed the **/.osgrep/** entry from the ignore list.
  • README.md
    • Removed osgrep from the list of MCP packages.
    • Removed osgrep from the list of context tools.
    • Removed the entire 'osgrep - Local Alternative (Experimental)' section.
  • aidevops.sh
    • Removed the osgrep status check from the cmd_status function.
  • configs/mcp-templates/osgrep.json
    • Removed file.
  • setup-modules/mcp-setup.sh
    • Removed osgrep from the comment listing MCP setup functions.
    • Removed the setup_osgrep function.
  • setup-modules/migrations.sh
    • Added .agents/tools/context/osgrep.md to the list of deprecated paths to clean up.
    • Added a new cleanup_osgrep function to handle the uninstallation of the osgrep npm package, removal of its data directory, and cleanup of OpenCode and Claude Code configurations.
    • Removed osgrep from the keep_enabled array for re-enabling MCPs.
  • setup.sh
    • Removed the setup_osgrep step from the main setup routine.
    • Removed osgrep from the summary of MCP Integrations (OpenCode).
  • tests/test-dispatch-claude-cli.sh
    • Removed osgrep from the mock Claude settings JSON.
    • Updated test assertions to no longer check for osgrep exclusion.
    • Removed osgrep from the mock OpenCode config JSON.
Ignored Files
  • Ignored by pattern: configs/*.json.txt (2)
    • configs/mcp-servers-config.json.txt
    • configs/osgrep-config.json.txt
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@github-actions
Copy link

🔍 Code Quality Report

�[0;35m[MONITOR]�[0m Code Review Monitoring Report

�[0;34m[INFO]�[0m Latest Quality Status:
SonarCloud: 0 bugs, 0 vulnerabilities, 40 code smells

�[0;34m[INFO]�[0m Recent monitoring activity:
Sun Feb 22 21:17:20 UTC 2026: Code review monitoring started
Sun Feb 22 21:17:21 UTC 2026: SonarCloud - Bugs: 0, Vulnerabilities: 0, Code Smells: 40

📈 Current Quality Metrics

  • BUGS: 0
  • CODE SMELLS: 40
  • VULNERABILITIES: 0

Generated on: Sun Feb 22 21:17:24 UTC 2026


Generated by AI DevOps Framework Code Review Monitoring

@sonarqubecloud
Copy link

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request does a great job of thoroughly removing osgrep from the aidevops framework, which is a significant cleanup to reduce resource consumption. The changes are extensive, touching documentation, setup scripts, agent configurations, and tests, ensuring a complete removal. The addition of the cleanup_osgrep migration function is a thoughtful touch to help users transition smoothly.

My review focuses on the new migration script, where I've found a few areas for improvement to enhance its robustness and correctness, primarily concerning error handling and a bug in a jq query, aligning the code with established repository rules and style guides.

if [[ -d "$repo_path/.osgrep" ]]; then
rm -rf "$repo_path/.osgrep"
fi
done < <(jq -r '.[]' "$repos_file" 2>/dev/null)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The jq query here appears to be incorrect and error suppression might hide issues. The query jq -r '.[]' will iterate over the top-level values of repos.json (the initialized_repos array and git_parent_dirs array), not the individual repository paths. This will cause the cleanup of per-repo .osgrep directories to fail silently.

The correct query should be jq -r '.initialized_repos[].path', which is used elsewhere in the codebase to get repository paths.

Additionally, suppressing stderr with 2>/dev/null violates the repository's style guide (line 50) and project rules, which discourage blanket error suppression and emphasize keeping jq errors visible for debugging, especially for malformed files.

Suggested change
done < <(jq -r '.[]' "$repos_file" 2>/dev/null)
done < <(jq -r '.initialized_repos[].path' "$repos_file")
References
  1. 2>/dev/null is acceptable ONLY when redirecting to log files, not for blanket suppression of potential errors. (link)
  2. Avoid using '2>/dev/null' for blanket suppression of command errors in shell scripts to ensure that authentication, syntax, or system issues remain visible for debugging.
  3. In shell scripts with 'set -e' enabled, use '|| true' to prevent the script from exiting when a command like 'jq' fails on an optional lookup. Do not suppress stderr with '2>/dev/null' so that actual syntax or system errors remain visible for debugging.
  4. When reporting errors for failed file operations in shell scripts, such as 'jq' writes, include the file path in the error message. Avoid suppressing stderr with '2>/dev/null' to ensure that diagnostic information about malformed files or write failures is visible.

# Remove osgrep completely — one-time cleanup for all aidevops users
# osgrep consumed 74GB disk (lancedb indexes) and 4 CPU cores on startup.
# rg + fd + LLM comprehension covers the same ground at zero resource cost.
cleanup_osgrep() {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This function creates temporary files using mktemp (e.g., on lines 99 and 115) but does not set up a trap for cleanup on exit. This violates the repository style guide (line 33), which requires trap cleanup for temp files to prevent them from being left behind on unexpected script termination.

As per the project's established pattern for resource cleanup, please use _save_cleanup_scope, trap '_run_cleanups' RETURN, and push_cleanup for robust cleanup on any exit path. Also, consider including explicit manual cleanup at the end of the normal execution path as a 'fast-path'. Adding cleanup logic will make the script more robust.

References
  1. Temp files must have trap cleanup (RETURN or EXIT) to ensure they are removed even if the script exits unexpectedly. (link)
  2. For resource cleanup in shell scripts, use the established project pattern: use _save_cleanup_scope, trap '_run_cleanups' RETURN, and push_cleanup for robust cleanup on any exit path, and also include explicit manual cleanup at the end of the normal execution path as a 'fast-path'.

if jq -e '.mcp["osgrep"]' "$opencode_config" >/dev/null 2>&1; then
local tmp_file
tmp_file=$(mktemp)
if jq 'del(.mcp["osgrep"]) | del(.tools["osgrep_*"])' "$opencode_config" >"$tmp_file" 2>/dev/null; then

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Suppressing stderr with 2>/dev/null can hide important jq parsing errors if the opencode.json file is malformed. This violates the repository style guide (line 50) and project rules, which discourage blanket error suppression and emphasize keeping jq errors visible for debugging. The if statement will correctly handle a non-zero exit code from jq, so removing the redirection will make the script more robust by allowing error messages to be visible for debugging.

Suggested change
if jq 'del(.mcp["osgrep"]) | del(.tools["osgrep_*"])' "$opencode_config" >"$tmp_file" 2>/dev/null; then
if jq 'del(.mcp["osgrep"]) | del(.tools["osgrep_*"])' "$opencode_config" >"$tmp_file"; then
References
  1. 2>/dev/null is acceptable ONLY when redirecting to log files, not for blanket suppression of potential errors. (link)
  2. Avoid using '2>/dev/null' for blanket suppression of command errors in shell scripts to ensure that authentication, syntax, or system issues remain visible for debugging.
  3. In shell scripts with 'set -e' enabled, use '|| true' to prevent the script from exiting when a command like 'jq' fails on an optional lookup. Do not suppress stderr with '2>/dev/null' so that actual syntax or system errors remain visible for debugging.
  4. When reporting errors for failed file operations in shell scripts, such as 'jq' writes, include the file path in the error message. Avoid suppressing stderr with '2>/dev/null' to ensure that diagnostic information about malformed files or write failures is visible.

if jq -e '.mcpServers["osgrep"] // .enabledPlugins["osgrep@osgrep"]' "$claude_settings" >/dev/null 2>&1; then
local tmp_file
tmp_file=$(mktemp)
if jq 'del(.mcpServers["osgrep"]) | del(.enabledPlugins["osgrep@osgrep"])' "$claude_settings" >"$tmp_file" 2>/dev/null; then

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Similar to the previous comment, suppressing stderr with 2>/dev/null here can hide jq errors if settings.json is malformed. This violates the repository style guide (line 50) and project rules, which discourage blanket error suppression and emphasize keeping jq errors visible for debugging. Please remove the redirection to allow potential errors to be visible for easier debugging.

Suggested change
if jq 'del(.mcpServers["osgrep"]) | del(.enabledPlugins["osgrep@osgrep"])' "$claude_settings" >"$tmp_file" 2>/dev/null; then
if jq 'del(.mcpServers["osgrep"]) | del(.enabledPlugins["osgrep@osgrep"])' "$claude_settings" >"$tmp_file"; then
References
  1. 2>/dev/null is acceptable ONLY when redirecting to log files, not for blanket suppression of potential errors. (link)
  2. Avoid using '2>/dev/null' for blanket suppression of command errors in shell scripts to ensure that authentication, syntax, or system issues remain visible for debugging.
  3. In shell scripts with 'set -e' enabled, use '|| true' to prevent the script from exiting when a command like 'jq' fails on an optional lookup. Do not suppress stderr with '2>/dev/null' so that actual syntax or system errors remain visible for debugging.
  4. When reporting errors for failed file operations in shell scripts, such as 'jq' writes, include the file path in the error message. Avoid suppressing stderr with '2>/dev/null' to ensure that diagnostic information about malformed files or write failures is visible.

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.

1 participant