Skip to content

fix: enhance prometheus-md-only hook to intercept bash file modifications (#2273)#2403

Closed
guazi04 wants to merge 1 commit intocode-yeongyu:devfrom
guazi04:fix/prometheus-bash-file-guard
Closed

fix: enhance prometheus-md-only hook to intercept bash file modifications (#2273)#2403
guazi04 wants to merge 1 commit intocode-yeongyu:devfrom
guazi04:fix/prometheus-bash-file-guard

Conversation

@guazi04
Copy link

@guazi04 guazi04 commented Mar 9, 2026

Summary

Fixes #2273 — Prometheus agent can bypass file write restrictions via bash/interactive_bash tools.

Instead of denying bash access entirely (as attempted in #2298), this PR enhances the existing prometheus-md-only hook to intercept bash commands that modify non-.md files, following a default-deny strategy.

Approach

The hook now inspects Bash and interactive_bash tool inputs using a self-contained command analyzer:

  • Default-deny: Any command that can't be statically verified as read-only is blocked
  • Read-only allowlist: Only provably non-mutating commands are permitted (cat, ls, grep, find without exec flags, git with read-only subcommands, etc.)
  • Redirection validation: Output redirections (>, >>) are only allowed to .sisyphus/**/*.md paths (reuses existing isAllowedFile())
  • Compound command rejection: Commands with &&, ||, ;, | are blocked (each could contain mutations)
  • Subshell/substitution detection: $(...), backticks, and process substitution <(, >( are blocked (even inside double quotes — only single-quoted literals are safe)
  • interactive_bash: Blocked entirely (tmux commands are unparseable)

Key design decisions

  1. Interpreter commands blocked: awk, sed, yq are excluded from the allowlist because they can write files internally without shell redirections (e.g., awk 'BEGIN{print 1 > "file"}', sed 'w file')
  2. Git subcommand restrictions: Only truly read-only git operations allowed (log, diff, show, blame, status, ls-files, etc.). Mutating subcommands like branch, tag, remote (without -v) are blocked. --output flag detected in both --output=file and --output file forms
  3. Quoted path handling: Surrounding quotes are stripped from redirect targets before path validation
  4. No shell parsing dependency: The tokenizer is self-contained with no external dependencies

Files changed

File Change
bash-command-policy.ts NEW — Self-contained bash command analyzer (tokenizer + policy engine)
bash-command-policy.test.ts NEW — 112 tests covering allowlist, dangerous flags, redirections, subshells, edge cases, and bypass vectors
hook.ts Added bash/interactive_bash tool handling in the existing hook
constants.ts Added BASH_TOOLS and BLOCKED_BASH_TOOLS constants
index.test.ts Added 44 integration tests for bash blocking in the hook
index.ts Barrel export for new module

Test coverage

156 tests total, 0 failures. Tests include:

  • Read-only command allowlist validation
  • Dangerous flag detection (find -exec, find -fprintf, etc.)
  • Git subcommand restrictions and flag detection
  • Redirection to allowed/disallowed paths
  • Command substitution bypass prevention (echo "$(rm file)", backticks in double quotes)
  • Process substitution detection (<(...), >(...))
  • awk/sed/yq interpreter blocking
  • Quoted redirect target handling
  • Compound command rejection
  • Edge cases (empty commands, whitespace, special characters)

Summary by cubic

Intercepts bash/Bash in the prometheus-md-only hook to block file mutations with a strict default-deny policy; only safe reads are allowed, and writes are limited to .sisyphus/**/*.md. Also blocks interactive_bash. Fixes #2273.

  • Bug Fixes
    • Adds a self-contained, quote-aware analyzer for bash commands.
    • Default-deny: allow only read-only tools (cat, ls, grep, find without exec; read-only git).
    • Validates redirections: allow >/>> only to .sisyphus/**/*.md (handles quoted paths).
    • Blocks compound commands and subshells (;, &&, ||, |, $(), backticks, <( ), >( )).
    • Restricts git: read-only subcommands only; rejects --output; remote requires -v/--verbose; config limited to --get/--list; blocks mutating tag flags.
    • Blocks wrappers/interpreters that can mutate (env, sudo, bash -c, xargs, sh/zsh).
    • Always blocks interactive_bash.

Written for commit 17dbc2a. Summary will update on new commits.

Copy link

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

3 issues found across 6 files

Confidence score: 2/5

  • High-risk security issue in src/hooks/prometheus-md-only/bash-command-policy.ts: hasCompoundOperators misses single &, which can bypass command-policy checks and enable arbitrary background command execution.
  • Two additional security-related gaps increase regression risk: missing -o blocking tests for sort/tree in src/hooks/prometheus-md-only/bash-command-policy.test.ts, and case-sensitive tool matching in src/hooks/prometheus-md-only/constants.ts that may miss Bash.
  • Because these findings are high severity (7–9/10) with strong confidence, this is not a low-risk merge until the policy logic and coverage are tightened.
  • Pay close attention to src/hooks/prometheus-md-only/bash-command-policy.ts, src/hooks/prometheus-md-only/bash-command-policy.test.ts, src/hooks/prometheus-md-only/constants.ts - close security bypass paths and add coverage for blocked flag/tool variants.
Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="src/hooks/prometheus-md-only/constants.ts">

<violation number="1" location="src/hooks/prometheus-md-only/constants.ts:14">
P1: Missing case variation for Bash tool name - only lowercase "bash" in BASH_TOOLS array, but matching is case-sensitive. Add "Bash" to match BLOCKED_TOOLS pattern.</violation>
</file>

<file name="src/hooks/prometheus-md-only/bash-command-policy.ts">

<violation number="1" location="src/hooks/prometheus-md-only/bash-command-policy.ts:123">
P0: Security bypass: Missing detection for single ampersand (`&`) background operator allows arbitrary command execution. The `hasCompoundOperators` function detects `;`, `|`, `||`, and `&&` but fails to detect `&`, enabling attacks like `cat file & rm -rf /` where the second command executes unconstrained.</violation>
</file>

<file name="src/hooks/prometheus-md-only/bash-command-policy.test.ts">

<violation number="1" location="src/hooks/prometheus-md-only/bash-command-policy.test.ts:60">
P1: Security Vulnerability: Missing tests for `-o` (output) flag blocking on `sort` and `tree` commands. Both commands support `-o FILE` to write output to arbitrary files, but the tests don't verify these flags are blocked. The `sort` and `tree` commands are in READ_ONLY_COMMANDS without flag validation, allowing commands like `sort data.txt -o src/index.ts` to bypass write restrictions. Add tests verifying `sort -o` and `tree -o` are properly blocked, similar to existing tests for find -exec and git diff --output.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

if (char === ";") return true
if (char === "|" && command[i + 1] === "|") return true
if (char === "|") return true
if (char === "&" && command[i + 1] === "&") return true
Copy link

@cubic-dev-ai cubic-dev-ai bot Mar 9, 2026

Choose a reason for hiding this comment

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

P0: Security bypass: Missing detection for single ampersand (&) background operator allows arbitrary command execution. The hasCompoundOperators function detects ;, |, ||, and && but fails to detect &, enabling attacks like cat file & rm -rf / where the second command executes unconstrained.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/hooks/prometheus-md-only/bash-command-policy.ts, line 123:

<comment>Security bypass: Missing detection for single ampersand (`&`) background operator allows arbitrary command execution. The `hasCompoundOperators` function detects `;`, `|`, `||`, and `&&` but fails to detect `&`, enabling attacks like `cat file & rm -rf /` where the second command executes unconstrained.</comment>

<file context>
@@ -0,0 +1,405 @@
+    if (char === ";") return true
+    if (char === "|" && command[i + 1] === "|") return true
+    if (char === "|") return true
+    if (char === "&" && command[i + 1] === "&") return true
+  }
+
</file context>
Fix with Cubic

Copy link
Author

Choose a reason for hiding this comment

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

Good catch. Fixed — single & (background operator) is now detected in hasCompoundOperators(). The check correctly handles && first, then detects lone & (excluding &> redirects). Added tests for cat file & rm -rf / (blocked) and quoted & (allowed).

@guazi04 guazi04 force-pushed the fix/prometheus-bash-file-guard branch from 91d43e2 to 17dbc2a Compare March 9, 2026 07:11
@acamq
Copy link
Collaborator

acamq commented Mar 9, 2026

@cubic-dev-ai

@cubic-dev-ai
Copy link

cubic-dev-ai bot commented Mar 9, 2026

@cubic-dev-ai

@acamq I have started the AI code review. It will take a few minutes to complete.

Copy link

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

8 issues found across 6 files

Confidence score: 1/5

  • Multiple high-confidence security bypasses in src/hooks/prometheus-md-only/bash-command-policy.ts (quoted-flag matching gaps, subshell quote-state bug, redirection parsing gaps, and unchecked output-file argument forms) indicate likely policy evasion and arbitrary file overwrite risk.
  • src/hooks/prometheus-md-only/bash-command-policy.test.ts reports a concrete command-execution vector (rg --pre) plus missing tokenizer bypass coverage, so current tests do not reliably guard against these regressions.
  • src/hooks/prometheus-md-only/hook.ts may skip validation when output.args.command is absent, creating an additional path for unvalidated command input depending on parameter shape.
  • Pay close attention to src/hooks/prometheus-md-only/bash-command-policy.ts, src/hooks/prometheus-md-only/bash-command-policy.test.ts, and src/hooks/prometheus-md-only/hook.ts - security-critical validation bypasses and missing/insufficient protections are concentrated here.
Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="src/hooks/prometheus-md-only/hook.ts">

<violation number="1" location="src/hooks/prometheus-md-only/hook.ts:53">
P1: Potential bash command policy bypass via alternative parameter names. When `output.args.command` is falsy/undefined, the hook returns early without validation. If the bash tool supports alternative parameter names (script, cmd, code, commands array), malicious commands could bypass analyzeBashCommand completely. Should reject bash calls lacking valid command argument with an error instead of silent return.</violation>
</file>

<file name="src/hooks/prometheus-md-only/bash-command-policy.ts">

<violation number="1" location="src/hooks/prometheus-md-only/bash-command-policy.ts:13">
P0: Arbitrary file overwrites via xxd/uniq positional output arguments and sort --output flag bypass. Commands xxd, uniq accept output files as second positional arguments, and sort accepts --output=FILE (not checked, only -o is validated). These allowlisted commands can overwrite any file on the system, bypassing the .sisyphus/**/*.md restriction.</violation>

<violation number="2" location="src/hooks/prometheus-md-only/bash-command-policy.ts:131">
P0: Missing double quote tracking in `hasSubshells()` function creates a security bypass vulnerability. When a single quote appears inside double quotes, it should be treated as a literal character (not a quote delimiter). The function should track `inDoubleQuote` state like `tokenize()` and `hasCompoundOperators()` already do.</violation>

<violation number="3" location="src/hooks/prometheus-md-only/bash-command-policy.ts:186">
P0: Security bypass in redirection validation: The tokenization logic fails to detect redirects without preceding spaces (e.g., `echo "data">/etc/passwd`) and arbitrary file descriptors (e.g., `cat 3>/etc/shadow`). The tokenizer only splits on whitespace, so `data>/etc/passwd` becomes a single token that doesn't start with known operators. The redirectOps set also doesn't include file descriptors beyond 1 and 2.</violation>

<violation number="4" location="src/hooks/prometheus-md-only/bash-command-policy.ts:292">
P0: Dangerous flags can bypass blocklists via quoted arguments due to quote preservation in tokenizer but exact string matching in validators. The tokenizer preserves quotes (e.g., `"-exec"` stays as `"-exec"`), but validators check against unquoted flag names (e.g., `-exec`). Since bash removes outer quotes before passing arguments to commands, an attacker can use `find . "-exec" touch pwned.txt ";"` to bypass the `-exec` blocklist check.</violation>
</file>

<file name="src/hooks/prometheus-md-only/bash-command-policy.test.ts">

<violation number="1" location="src/hooks/prometheus-md-only/bash-command-policy.test.ts:45">
P0: `rg` (ripgrep) is allowed but permits arbitrary command execution via the `--pre` flag. The implementation lacks validation to block this dangerous flag, which can execute arbitrary commands on each file searched (CVE-2021-3013).</violation>

<violation number="2" location="src/hooks/prometheus-md-only/bash-command-policy.test.ts:145">
P2: `git remote` and `git config` validations may permit mutating or interactive flags if combined with safe ones. The tests should verify that dangerous combinations like `git remote update -v` (mutating fetch) and `git config --get --edit` (interactive editor) are properly blocked. Add test cases to ensure these edge cases are rejected by the validation.</violation>

<violation number="3" location="src/hooks/prometheus-md-only/bash-command-policy.test.ts:454">
P1: Test file lacks coverage for intra-token quoting/escaping bypass attempts in bash tokenizer security validation</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

const READ_ONLY_COMMANDS = new Set([
"cat", "grep", "rg", "find", "ls", "tree", "wc", "head", "tail", "less",
"file", "stat", "du", "df", "pwd", "which", "realpath", "dirname", "basename",
"diff", "sort", "uniq", "tr", "cut", "jq", "xxd",
Copy link

@cubic-dev-ai cubic-dev-ai bot Mar 9, 2026

Choose a reason for hiding this comment

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

P0: Arbitrary file overwrites via xxd/uniq positional output arguments and sort --output flag bypass. Commands xxd, uniq accept output files as second positional arguments, and sort accepts --output=FILE (not checked, only -o is validated). These allowlisted commands can overwrite any file on the system, bypassing the .sisyphus/**/*.md restriction.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/hooks/prometheus-md-only/bash-command-policy.ts, line 13:

<comment>Arbitrary file overwrites via xxd/uniq positional output arguments and sort --output flag bypass. Commands xxd, uniq accept output files as second positional arguments, and sort accepts --output=FILE (not checked, only -o is validated). These allowlisted commands can overwrite any file on the system, bypassing the .sisyphus/**/*.md restriction.</comment>

<file context>
@@ -0,0 +1,424 @@
+const READ_ONLY_COMMANDS = new Set([
+  "cat", "grep", "rg", "find", "ls", "tree", "wc", "head", "tail", "less",
+  "file", "stat", "du", "df", "pwd", "which", "realpath", "dirname", "basename",
+  "diff", "sort", "uniq", "tr", "cut", "jq", "xxd",
+  "hexdump", "strings",
+])
</file context>
Fix with Cubic

return { allowed: true, reason: "allowed git read-only subcommand" }
}

function validateFindCommand(tokens: string[]): BashCommandResult {
Copy link

@cubic-dev-ai cubic-dev-ai bot Mar 9, 2026

Choose a reason for hiding this comment

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

P0: Dangerous flags can bypass blocklists via quoted arguments due to quote preservation in tokenizer but exact string matching in validators. The tokenizer preserves quotes (e.g., "-exec" stays as "-exec"), but validators check against unquoted flag names (e.g., -exec). Since bash removes outer quotes before passing arguments to commands, an attacker can use find . "-exec" touch pwned.txt ";" to bypass the -exec blocklist check.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/hooks/prometheus-md-only/bash-command-policy.ts, line 292:

<comment>Dangerous flags can bypass blocklists via quoted arguments due to quote preservation in tokenizer but exact string matching in validators. The tokenizer preserves quotes (e.g., `"-exec"` stays as `"-exec"`), but validators check against unquoted flag names (e.g., `-exec`). Since bash removes outer quotes before passing arguments to commands, an attacker can use `find . "-exec" touch pwned.txt ";"` to bypass the `-exec` blocklist check.</comment>

<file context>
@@ -0,0 +1,424 @@
+  return { allowed: true, reason: "allowed git read-only subcommand" }
+}
+
+function validateFindCommand(tokens: string[]): BashCommandResult {
+  for (const token of tokens) {
+    if (DANGEROUS_FIND_FLAGS.has(token)) {
</file context>
Fix with Cubic

return false
}

function hasSubshells(command: string): boolean {
Copy link

@cubic-dev-ai cubic-dev-ai bot Mar 9, 2026

Choose a reason for hiding this comment

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

P0: Missing double quote tracking in hasSubshells() function creates a security bypass vulnerability. When a single quote appears inside double quotes, it should be treated as a literal character (not a quote delimiter). The function should track inDoubleQuote state like tokenize() and hasCompoundOperators() already do.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/hooks/prometheus-md-only/bash-command-policy.ts, line 131:

<comment>Missing double quote tracking in `hasSubshells()` function creates a security bypass vulnerability. When a single quote appears inside double quotes, it should be treated as a literal character (not a quote delimiter). The function should track `inDoubleQuote` state like `tokenize()` and `hasCompoundOperators()` already do.</comment>

<file context>
@@ -0,0 +1,424 @@
+  return false
+}
+
+function hasSubshells(command: string): boolean {
+  let inSingleQuote = false
+  let escaped = false
</file context>
Fix with Cubic

*/
function extractRedirectTargets(tokens: string[]): string[] {
const targets: string[] = []
const redirectOps = new Set([">", ">>", "1>", "2>", "&>", ">|"])
Copy link

@cubic-dev-ai cubic-dev-ai bot Mar 9, 2026

Choose a reason for hiding this comment

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

P0: Security bypass in redirection validation: The tokenization logic fails to detect redirects without preceding spaces (e.g., echo "data">/etc/passwd) and arbitrary file descriptors (e.g., cat 3>/etc/shadow). The tokenizer only splits on whitespace, so data>/etc/passwd becomes a single token that doesn't start with known operators. The redirectOps set also doesn't include file descriptors beyond 1 and 2.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/hooks/prometheus-md-only/bash-command-policy.ts, line 186:

<comment>Security bypass in redirection validation: The tokenization logic fails to detect redirects without preceding spaces (e.g., `echo "data">/etc/passwd`) and arbitrary file descriptors (e.g., `cat 3>/etc/shadow`). The tokenizer only splits on whitespace, so `data>/etc/passwd` becomes a single token that doesn't start with known operators. The redirectOps set also doesn't include file descriptors beyond 1 and 2.</comment>

<file context>
@@ -0,0 +1,424 @@
+ */
+function extractRedirectTargets(tokens: string[]): string[] {
+  const targets: string[] = []
+  const redirectOps = new Set([">", ">>", "1>", "2>", "&>", ">|"])
+
+  for (let i = 0; i < tokens.length; i++) {
</file context>
Fix with Cubic

expect(result.allowed).toBe(true)
})

test("#then rg should be allowed", () => {
Copy link

@cubic-dev-ai cubic-dev-ai bot Mar 9, 2026

Choose a reason for hiding this comment

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

P0: rg (ripgrep) is allowed but permits arbitrary command execution via the --pre flag. The implementation lacks validation to block this dangerous flag, which can execute arbitrary commands on each file searched (CVE-2021-3013).

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/hooks/prometheus-md-only/bash-command-policy.test.ts, line 45:

<comment>`rg` (ripgrep) is allowed but permits arbitrary command execution via the `--pre` flag. The implementation lacks validation to block this dangerous flag, which can execute arbitrary commands on each file searched (CVE-2021-3013).</comment>

<file context>
@@ -0,0 +1,738 @@
+        expect(result.allowed).toBe(true)
+      })
+
+      test("#then rg should be allowed", () => {
+        const result = analyzeBashCommand("rg 'pattern' src/", WORKSPACE)
+        expect(result.allowed).toBe(true)
</file context>
Fix with Cubic

}

if (BASH_TOOLS.includes(toolName)) {
const command = output.args.command as string | undefined
Copy link

@cubic-dev-ai cubic-dev-ai bot Mar 9, 2026

Choose a reason for hiding this comment

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

P1: Potential bash command policy bypass via alternative parameter names. When output.args.command is falsy/undefined, the hook returns early without validation. If the bash tool supports alternative parameter names (script, cmd, code, commands array), malicious commands could bypass analyzeBashCommand completely. Should reject bash calls lacking valid command argument with an error instead of silent return.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/hooks/prometheus-md-only/hook.ts, line 53:

<comment>Potential bash command policy bypass via alternative parameter names. When `output.args.command` is falsy/undefined, the hook returns early without validation. If the bash tool supports alternative parameter names (script, cmd, code, commands array), malicious commands could bypass analyzeBashCommand completely. Should reject bash calls lacking valid command argument with an error instead of silent return.</comment>

<file context>
@@ -37,6 +38,36 @@ export function createPrometheusMdOnlyHook(ctx: PluginInput) {
+      }
+
+      if (BASH_TOOLS.includes(toolName)) {
+        const command = output.args.command as string | undefined
+        if (!command) {
+          return
</file context>
Fix with Cubic


describe("#given dangerous flags on safe commands", () => {
describe("#when find has exec flags", () => {
test("#then find -exec should be blocked", () => {
Copy link

@cubic-dev-ai cubic-dev-ai bot Mar 9, 2026

Choose a reason for hiding this comment

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

P1: Test file lacks coverage for intra-token quoting/escaping bypass attempts in bash tokenizer security validation

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/hooks/prometheus-md-only/bash-command-policy.test.ts, line 454:

<comment>Test file lacks coverage for intra-token quoting/escaping bypass attempts in bash tokenizer security validation</comment>

<file context>
@@ -0,0 +1,738 @@
+
+  describe("#given dangerous flags on safe commands", () => {
+    describe("#when find has exec flags", () => {
+      test("#then find -exec should be blocked", () => {
+        const result = analyzeBashCommand("find . -exec rm {} \\;", WORKSPACE)
+        expect(result.allowed).toBe(false)
</file context>
Fix with Cubic

expect(result.allowed).toBe(true)
})

test("#then git config --get should be allowed", () => {
Copy link

@cubic-dev-ai cubic-dev-ai bot Mar 9, 2026

Choose a reason for hiding this comment

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

P2: git remote and git config validations may permit mutating or interactive flags if combined with safe ones. The tests should verify that dangerous combinations like git remote update -v (mutating fetch) and git config --get --edit (interactive editor) are properly blocked. Add test cases to ensure these edge cases are rejected by the validation.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/hooks/prometheus-md-only/bash-command-policy.test.ts, line 145:

<comment>`git remote` and `git config` validations may permit mutating or interactive flags if combined with safe ones. The tests should verify that dangerous combinations like `git remote update -v` (mutating fetch) and `git config --get --edit` (interactive editor) are properly blocked. Add test cases to ensure these edge cases are rejected by the validation.</comment>

<file context>
@@ -0,0 +1,738 @@
+        expect(result.allowed).toBe(true)
+      })
+
+      test("#then git config --get should be allowed", () => {
+        const result = analyzeBashCommand("git config --get user.name", WORKSPACE)
+        expect(result.allowed).toBe(true)
</file context>
Fix with Cubic

@guazi04
Copy link
Author

guazi04 commented Mar 11, 2026

Closing in favor of #2414 (deny bash entirely for Prometheus). The tokenizer-based approach has too many security bypass vectors to be practical.

@guazi04 guazi04 closed this Mar 11, 2026
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.

[Bug]: Prometheus CAN edit files

2 participants