<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>BrassCoders — Noise Filter for AI-Generated Code Review</title><description>Notes on AI code review noise filtering, static analysis, and shipping cleaner code with Claude Code / Cursor.</description><link>https://coppersun.dev/</link><language>en-us</language><item><title>AI Code License Risk From Training-Data Memorization</title><link>https://coppersun.dev/blog/ai-code-license-risk-memorization/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-code-license-risk-memorization/</guid><description>AI coding assistants can reproduce license-encumbered training data. Here is what the memorization research, GitHub&apos;s own data, and an active lawsuit say.</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate><category>privacy</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>The CVE Record on Insecure Deserialization in AI Python Code</title><link>https://coppersun.dev/blog/deserialization-cves-ai-ml-python-2026/</link><guid isPermaLink="true">https://coppersun.dev/blog/deserialization-cves-ai-ml-python-2026/</guid><description>PyYAML&apos;s yaml.load carried a CVSS 9.8 CVE. PyTorch&apos;s torch.load carried one at 9.3, in 2025, in a flag documented as safe. Here is the actual track record.</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate><category>security</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>IDOR and Access Control in AI APIs, by the Numbers</title><link>https://coppersun.dev/blog/idor-access-control-by-the-numbers/</link><guid isPermaLink="true">https://coppersun.dev/blog/idor-access-control-by-the-numbers/</guid><description>OWASP ranks broken access control the top web risk and BOLA the top API risk. Real prevalence and attack data, and what BrassCoders can honestly flag.</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate><category>security</category><category>benchmarks</category><author>Copper Sun Brass Team</author></item><item><title>Will Your AI Write A Regex That Hangs Your Server?</title><link>https://coppersun.dev/blog/redos-ai-generated-regex/</link><guid isPermaLink="true">https://coppersun.dev/blog/redos-ai-generated-regex/</guid><description>Catastrophic backtracking turns one crafted input into a denial-of-service attack: real npm advisories and how to catch it before it ships.</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate><category>security</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>AI Code Defect Rates: The Q3 2026 Data Report</title><link>https://coppersun.dev/blog/ai-code-defect-rates-q3-2026/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-code-defect-rates-q3-2026/</guid><description>A dated, sourced snapshot of AI-generated-code defect and security rates for Q3 2026: 45% OWASP flaws, 1.7x issues per PR, 19.7% phantom packages. Refreshed quarterly.</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><category>benchmarks</category><category>security</category><category>ai-code-review</category><author>Copper Sun Brass Team</author></item><item><title>AI Package Hallucination Rate: 96 Names Checked On PyPI</title><link>https://coppersun.dev/blog/ai-package-hallucination-data/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-package-hallucination-data/</guid><description>BrassCoders ran a first-party probe: 96 package names a frontier AI model suggested for Python tasks, checked live against PyPI. 95 existed; 1 didn&apos;t.</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><category>security</category><category>benchmarks</category><category>hallucination</category><category>supply-chain</category><author>Copper Sun Brass Team</author></item><item><title>Run BrassCoders Automatically in a Claude Code Hook</title><link>https://coppersun.dev/blog/brasscoders-claude-code-hook/</link><guid isPermaLink="true">https://coppersun.dev/blog/brasscoders-claude-code-hook/</guid><description>Wire a Claude Code hook to run brasscoders scan on every edit, so .brass/ai_instructions.yaml stays fresh and the assistant reads findings without copy-paste.</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><category>ai-code-review</category><category>workflow</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>LLM Code Reviewer Reliability, by the Numbers</title><link>https://coppersun.dev/blog/llm-code-reviewer-reliability-data/</link><guid isPermaLink="true">https://coppersun.dev/blog/llm-code-reviewer-reliability-data/</guid><description>A 2025 benchmark puts LLM code-review recall at 0.78 to 0.88, yet the models mislocate findings and vary run to run — the numbers on why it&apos;s a weak gate.</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><category>ai-code-review</category><category>benchmarks</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Scan, Patch, Re-Scan: Verifying AI Bug Fixes</title><link>https://coppersun.dev/blog/scan-patch-verify-ai-bugs/</link><guid isPermaLink="true">https://coppersun.dev/blog/scan-patch-verify-ai-bugs/</guid><description>BrassCoders closes the loop on AI-written bugs: scan for the finding, hand it to your assistant for a patch, then re-scan to confirm the fix deterministically.</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><category>ai-code-review</category><category>oss-core</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Command Injection in AI-Generated Express.js: A Real Scan</title><link>https://coppersun.dev/blog/express-security-ai-generated-nodejs/</link><guid isPermaLink="true">https://coppersun.dev/blog/express-security-ai-generated-nodejs/</guid><description>BrassCoders scans an AI-generated Express.js user API and returns CRITICAL command injection plus a hardcoded JWT secret. Real scan output and fixes.</description><pubDate>Fri, 28 Aug 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>AI Coding Tool Security Risk for Engineering Leaders</title><link>https://coppersun.dev/blog/ai-coding-tools-security-risk-engineering-leaders/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-coding-tools-security-risk-engineering-leaders/</guid><description>What three 2025 studies show about AI-generated code security, why the risk compounds, and how to build a deterministic scanning gate.</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Business Logic Bugs Static Analysis Will Never Catch</title><link>https://coppersun.dev/blog/business-logic-bugs-static-analysis/</link><guid isPermaLink="true">https://coppersun.dev/blog/business-logic-bugs-static-analysis/</guid><description>AI generates code that satisfies the prompt — not the business rules it was never given. Static analysis can&apos;t catch what only your requirements document knows.</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>The Trust Boundary Problem in AI-Generated Code</title><link>https://coppersun.dev/blog/trust-boundary-problem-ai-code/</link><guid isPermaLink="true">https://coppersun.dev/blog/trust-boundary-problem-ai-code/</guid><description>When AI-generated code is &apos;safe&apos; but wrong: the trust boundary is a design decision no scanner can make. Here&apos;s what it means and what actually enforces it.</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>New Guide: Running BrassCoders on Every Commit</title><link>https://coppersun.dev/blog/run-brasscoders-on-every-commit/</link><guid isPermaLink="true">https://coppersun.dev/blog/run-brasscoders-on-every-commit/</guid><description>A new guide covers how to run BrassCoders on every commit — a CI step on push or a git pre-commit hook — and why there&apos;s no automatic watch mode. BrassCoders is a command-line scanner you invoke, not a background daemon.</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>oss-core</category><category>ci-cd</category><category>ai-code-review</category><author>Copper Sun Brass Team</author></item><item><title>AI Coding Assistant Vendor Risk: What Your Security Team Should Ask</title><link>https://coppersun.dev/blog/ai-coding-assistant-vendor-risk-questions/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-coding-assistant-vendor-risk-questions/</guid><description>Evaluating an AI coding assistant for your team? Two separate surfaces require two separate question sets. Here&apos;s the checklist for both.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><category>security</category><category>compliance</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>From SQL Injection to Clean: Fixing a B608 Finding in AI-Generated Flask Code</title><link>https://coppersun.dev/blog/b608-sql-injection-fix-walkthrough/</link><guid isPermaLink="true">https://coppersun.dev/blog/b608-sql-injection-fix-walkthrough/</guid><description>Before-and-after walkthrough: BrassCoders finds SQL injection in a corpus Flask endpoint, the parameterized fix, and what the re-scan shows — including the one Semgrep taint finding that remains.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>Tuning .brassignore: Suppressing a False Positive in Three Steps</title><link>https://coppersun.dev/blog/brassignore-tune-false-positives/</link><guid isPermaLink="true">https://coppersun.dev/blog/brassignore-tune-false-positives/</guid><description>BrassCoders flags MD5 in a file-deduplication script as a CRITICAL security finding. The pattern match is correct — the context makes it a false positive. Here&apos;s the before scan, the .brassignore entry, and the after scan.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><category>oss-core</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Building the Business Case for AI Code Scanning</title><link>https://coppersun.dev/blog/business-case-ai-code-scanning/</link><guid isPermaLink="true">https://coppersun.dev/blog/business-case-ai-code-scanning/</guid><description>How to frame the ROI of adding AI-aware static analysis to your team&apos;s CI pipeline — anchored in your own scan data, not vendor-provided numbers.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><category>ai-code-review</category><category>security</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>From HIGH to Clean: Removing a Hardcoded HMAC Key in AI-Generated Python</title><link>https://coppersun.dev/blog/hardcoded-token-fix-walkthrough/</link><guid isPermaLink="true">https://coppersun.dev/blog/hardcoded-token-fix-walkthrough/</guid><description>A real before-and-after: BrassCoders&apos;s SecretsScanner finds a hardcoded HMAC signing key in a corpus Python file. The environment variable fix, the re-scan, and why detect-secrets catches this where Bandit alone misses some cases.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>Quantifying AI Code Risk: A Framework for Engineering Leaders</title><link>https://coppersun.dev/blog/quantifying-ai-code-risk-engineering-leaders/</link><guid isPermaLink="true">https://coppersun.dev/blog/quantifying-ai-code-risk-engineering-leaders/</guid><description>AI coding assistants expand code output without expanding review capacity. A practical framework for measuring AI-generated code security risk as a number your organization can act on.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><category>ai-code-review</category><category>security</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>The Security Manager&apos;s Brief on AI-Generated Code Risk</title><link>https://coppersun.dev/blog/security-manager-brief-ai-generated-code-risk/</link><guid isPermaLink="true">https://coppersun.dev/blog/security-manager-brief-ai-generated-code-risk/</guid><description>A concise brief on what AI coding assistants do to your security surface, what conventional tooling misses, and what one CI step closes the gap.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>What Static Analysis Cannot See: A Complete Map of the Limit</title><link>https://coppersun.dev/blog/what-static-analysis-cannot-see/</link><guid isPermaLink="true">https://coppersun.dev/blog/what-static-analysis-cannot-see/</guid><description>SQL injection: caught. Missing auth on a route: not caught. BrassCoders maps the precise boundary between what static analysis detects deterministically and what requires an AI assistant&apos;s context.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><category>oss-core</category><category>ai-code-review</category><category>security</category><author>Copper Sun Brass Team</author></item><item><title>What to Ask a Static Analysis Vendor When Your Team Uses AI Code</title><link>https://coppersun.dev/blog/what-to-ask-static-analysis-vendor-ai-code/</link><guid isPermaLink="true">https://coppersun.dev/blog/what-to-ask-static-analysis-vendor-ai-code/</guid><description>Generic static analysis tools have a coverage gap specific to AI-generated code. These questions separate AI-aware tools from legacy scanners in a vendor evaluation.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Does BrassCoders Scan Node.js and TypeScript Code?</title><link>https://coppersun.dev/blog/brasscoders-nodejs-typescript-coverage/</link><guid isPermaLink="true">https://coppersun.dev/blog/brasscoders-nodejs-typescript-coverage/</guid><description>Yes — via a dedicated Babel-based JavaScript/TypeScript scanner and Semgrep. Here&apos;s exactly what it catches and where the gap is versus the Python scanner.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate><category>oss-core</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Can BrassCoders Catch Race Conditions in Async Python?</title><link>https://coppersun.dev/blog/brasscoders-race-conditions-async-python/</link><guid isPermaLink="true">https://coppersun.dev/blog/brasscoders-race-conditions-async-python/</guid><description>Partially. BrassCoders catches structural indicators — threading.Thread without locks, shared mutable state in async functions — but not asyncio races that leave no structural marker.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate><category>engineering</category><category>ai-code-review</category><author>Copper Sun Brass Team</author></item><item><title>Can I Run BrassCoders Offline? Yes — Here&apos;s How</title><link>https://coppersun.dev/blog/can-i-run-brasscoders-offline/</link><guid isPermaLink="true">https://coppersun.dev/blog/can-i-run-brasscoders-offline/</guid><description>BrassCoders&apos;s OSS core makes zero outbound calls by default. The --offline flag adds hard enforcement for air-gapped CI, HIPAA, and SOC 2 environments.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate><category>oss-core</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>What&apos;s the Cost of a SQL Injection in AI-Generated Code?</title><link>https://coppersun.dev/blog/cost-sql-injection-ai-generated-code/</link><guid isPermaLink="true">https://coppersun.dev/blog/cost-sql-injection-ai-generated-code/</guid><description>Detection time, remediation effort, credential rotation, and incident response — framed in engineering hours, not dollar amounts. And what catching it at commit time costs instead.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate><category>security</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Does BrassCoders Work With Django REST Framework?</title><link>https://coppersun.dev/blog/does-brasscoders-work-with-django-rest-framework/</link><guid isPermaLink="true">https://coppersun.dev/blog/does-brasscoders-work-with-django-rest-framework/</guid><description>Yes — BrassCoders scans DRF views, serializers, and settings files. Semgrep includes Django-specific rules, and Bandit catches SQL injection and secrets in DRF route handlers.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate><category>oss-core</category><category>security</category><author>Copper Sun Brass Team</author></item><item><title>Does BrassCoders Work With pyproject.toml?</title><link>https://coppersun.dev/blog/does-brasscoders-work-with-pyproject-toml/</link><guid isPermaLink="true">https://coppersun.dev/blog/does-brasscoders-work-with-pyproject-toml/</guid><description>Yes — BrassCoders scans any Python project layout. It reads pyproject.toml as the project manifest for Paid-plan enrichment and works with both pyproject.toml and setup.py projects.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate><category>oss-core</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>How to Run Your First BrassCoders Scan on AI-Generated Python</title><link>https://coppersun.dev/blog/first-brasscoders-scan-ai-python/</link><guid isPermaLink="true">https://coppersun.dev/blog/first-brasscoders-scan-ai-python/</guid><description>Step-by-step: install BrassCoders, run the scan, read the .brass/ai_instructions.yaml output, and understand what to do with the findings.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate><category>oss-core</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>How Do I Read .brass/ai_instructions.yaml?</title><link>https://coppersun.dev/blog/how-do-i-read-brass-ai-instructions-yaml/</link><guid isPermaLink="true">https://coppersun.dev/blog/how-do-i-read-brass-ai-instructions-yaml/</guid><description>After a BrassCoders scan, .brass/ai_instructions.yaml contains severity-ranked findings formatted for pasting into Claude Code or Cursor. Here&apos;s how to read and use it.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate><category>oss-core</category><category>ai-code-review</category><author>Copper Sun Brass Team</author></item><item><title>How Long Does a BrassCoders Scan Take?</title><link>https://coppersun.dev/blog/how-long-does-a-brasscoders-scan-take/</link><guid isPermaLink="true">https://coppersun.dev/blog/how-long-does-a-brasscoders-scan-take/</guid><description>A typical BrassCoders scan runs in under 60 seconds on most Python codebases. Scan time scales with project size and whether Pyre/Pysa taint analysis is enabled.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate><category>oss-core</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>What Does a BrassCoders Scan Output Look Like?</title><link>https://coppersun.dev/blog/what-does-a-brasscoders-scan-output-look-like/</link><guid isPermaLink="true">https://coppersun.dev/blog/what-does-a-brasscoders-scan-output-look-like/</guid><description>BrassCoders writes three YAML files to .brass/ — a ranked AI instructions file, a full findings file, and a security-only view. Here&apos;s what each contains.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate><category>oss-core</category><category>ai-code-review</category><author>Copper Sun Brass Team</author></item><item><title>What Python Versions Does BrassCoders Support?</title><link>https://coppersun.dev/blog/what-python-versions-does-brasscoders-support/</link><guid isPermaLink="true">https://coppersun.dev/blog/what-python-versions-does-brasscoders-support/</guid><description>BrassCoders requires Python 3.10 or higher. It runs on macOS, Linux, and Windows via WSL2. Python 3.9 and earlier are not supported due to Pyre/Pysa requirements.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate><category>oss-core</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>What&apos;s the Difference Between .brassignore and .gitignore?</title><link>https://coppersun.dev/blog/what-is-the-difference-between-brassignore-and-gitignore/</link><guid isPermaLink="true">https://coppersun.dev/blog/what-is-the-difference-between-brassignore-and-gitignore/</guid><description>.gitignore tells git which files to exclude from version control. .brassignore tells BrassCoders which files or finding types to suppress — a different job, a different syntax.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate><category>oss-core</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Why AI Code Breaks in Production: The Happy-Path Bias</title><link>https://coppersun.dev/blog/ai-code-happy-path-bias-production-bugs/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-code-happy-path-bias-production-bugs/</guid><description>AI coding assistants optimize for the happy path: code that satisfies the prompt and passes local tests but breaks silently in production environments.</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate><category>engineering</category><category>ai-code-review</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>AI-Generated Migrations: The Data Loss Pattern</title><link>https://coppersun.dev/blog/ai-generated-migrations-data-loss-bugs/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-generated-migrations-data-loss-bugs/</guid><description>AI-generated Alembic and Django migrations have a specific failure pattern: column type mismatches and missing nullable defaults that corrupt data silently.</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate><category>engineering</category><category>ai-code-review</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>AI-Generated requirements.txt and Vulnerable Packages</title><link>https://coppersun.dev/blog/ai-generated-requirements-txt-vulnerable-packages/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-generated-requirements-txt-vulnerable-packages/</guid><description>AI pins real packages but outdated vulnerable versions in requirements.txt — different from slopsquatting, and invisible without an explicit audit.</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>AI Type Hints That Fool mypy and Break at Runtime</title><link>https://coppersun.dev/blog/ai-type-hints-fool-mypy-runtime-bugs/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-type-hints-fool-mypy-runtime-bugs/</guid><description>AI-generated type annotations pass mypy but fail at runtime — Optional masking required fields, Any collapsing structure, wrong return types.</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate><category>engineering</category><category>ai-code-review</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>Coverage Theater: AI Tests That Don&apos;t Test Anything</title><link>https://coppersun.dev/blog/coverage-theater-ai-generated-tests/</link><guid isPermaLink="true">https://coppersun.dev/blog/coverage-theater-ai-generated-tests/</guid><description>AI writes tests that hit 80% coverage but assert almost nothing — the pattern, why it happens, and what BrassCoders catches in the gap.</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate><category>engineering</category><category>ai-code-review</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>MCP Tool Poisoning: What Static Scanners Miss</title><link>https://coppersun.dev/blog/mcp-tool-poisoning-what-static-scanners-miss/</link><guid isPermaLink="true">https://coppersun.dev/blog/mcp-tool-poisoning-what-static-scanners-miss/</guid><description>Hidden instructions in MCP tool descriptions can hijack your AI coding agent. Here&apos;s the attack surface and what static analysis can and can&apos;t cover.</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>OWASP Agentic Top 10 for Python Developers</title><link>https://coppersun.dev/blog/owasp-agentic-top-10-python-developers/</link><guid isPermaLink="true">https://coppersun.dev/blog/owasp-agentic-top-10-python-developers/</guid><description>OWASP&apos;s agentic AI Top 10 covers risks Python developers face when using Claude Code, Cursor, or building autonomous AI coding pipelines.</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Pydantic v2 Validation Bugs AI Assistants Write</title><link>https://coppersun.dev/blog/pydantic-v2-validation-bugs-ai-generated-apis/</link><guid isPermaLink="true">https://coppersun.dev/blog/pydantic-v2-validation-bugs-ai-generated-apis/</guid><description>AI assistants write Pydantic v2 models that satisfy mypy but allow invalid data through, creating a false sense of API input validation security.</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Your README Is an Attack Surface for AI Agents</title><link>https://coppersun.dev/blog/readme-prompt-injection-ai-coding-agents/</link><guid isPermaLink="true">https://coppersun.dev/blog/readme-prompt-injection-ai-coding-agents/</guid><description>Hidden instructions in README files and code comments can steer Claude Code or Cursor into running attacker-controlled commands during a normal session.</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>What AI Coding Agents Leave Behind in Production</title><link>https://coppersun.dev/blog/what-ai-coding-agents-leave-in-production/</link><guid isPermaLink="true">https://coppersun.dev/blog/what-ai-coding-agents-leave-in-production/</guid><description>print() calls, commented-out auth checks, and debug flags — the artifacts AI coding assistants leave that consistently survive code review.</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Ruff Won&apos;t Catch Security Bugs Unless You Ask It To</title><link>https://coppersun.dev/blog/ruff-wont-catch-security-bugs/</link><guid isPermaLink="true">https://coppersun.dev/blog/ruff-wont-catch-security-bugs/</guid><description>Ruff&apos;s default ruleset covers style and correctness — not security. Here&apos;s what to add to Ruff, and what neither Ruff nor Bandit covers in AI-generated Python.</description><pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate><category>comparison</category><category>security</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>AI Code Security Scanners: Who Fills Which Role</title><link>https://coppersun.dev/blog/ai-code-security-scanners-compared/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-code-security-scanners-compared/</guid><description>BrassCoders, Snyk, Semgrep, SonarQube, and CodeRabbit each occupy a different pipeline slot. Here&apos;s how to map them to your CI workflow.</description><pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate><category>comparison</category><category>security</category><category>ai-code-review</category><author>Copper Sun Brass Team</author></item><item><title>Agentic Code Security: What Autonomous AI Gets Wrong</title><link>https://coppersun.dev/blog/agentic-code-security-autonomous-ai/</link><guid isPermaLink="true">https://coppersun.dev/blog/agentic-code-security-autonomous-ai/</guid><description>Autonomous coding agents ship code without a human in the review loop. BrassCoders scans the output regardless of authorship — here&apos;s what the patterns look like.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>AI Code in Regulated Industries: What NIST, CISA, and GDPR Require</title><link>https://coppersun.dev/blog/ai-code-policy-regulated-industries/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-code-policy-regulated-industries/</guid><description>Regulatory frameworks were written before AI coding assistants existed. Here&apos;s which existing obligations apply — and what evidence record satisfies them for the code-review step.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>compliance</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>The AI Code Review Policy Template for Engineering Teams</title><link>https://coppersun.dev/blog/ai-code-review-policy-template/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-code-review-policy-template/</guid><description>A complete, section-by-section AI code review policy template for engineering teams — covering the technical gate, human review requirements, secrets handling, and escalation paths.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>engineering</category><category>ai-code-review</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>Race Conditions in AI-Generated Concurrent Python</title><link>https://coppersun.dev/blog/async-race-conditions-ai-generated-python/</link><guid isPermaLink="true">https://coppersun.dev/blog/async-race-conditions-ai-generated-python/</guid><description>AI assistants generate async Python that shares mutable state without locking — the prompt asked for performance, not safety. Here&apos;s exactly what breaks and how to fix it.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>engineering</category><category>ai-code-review</category><author>Copper Sun Brass Team</author></item><item><title>Scanning LLM Application Code: What BrassCoders Finds</title><link>https://coppersun.dev/blog/brasscoders-scans-llm-application-code/</link><guid isPermaLink="true">https://coppersun.dev/blog/brasscoders-scans-llm-application-code/</guid><description>BrassCoders applies 12 scanners to LLM application code. What changes isn&apos;t the scanner — it&apos;s which findings dominate: hardcoded API keys, missing input validation before prompt templates, and SQL/shell injection through tool calls.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>Flask Security Bugs AI Coders Write — and BrassCoders Catches</title><link>https://coppersun.dev/blog/flask-security-ai-coders/</link><guid isPermaLink="true">https://coppersun.dev/blog/flask-security-ai-coders/</guid><description>Four Flask security patterns AI coding assistants get wrong: missing CSRF protection, debug=True in production, hardcoded secret_key, and SQL injection via f-string. Verified Bandit rule IDs included.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>benchmarks</category><author>Copper Sun Brass Team</author></item><item><title>GDPR and AI-Generated Code: What Data Leaves the Machine?</title><link>https://coppersun.dev/blog/gdpr-ai-code-data-handling/</link><guid isPermaLink="true">https://coppersun.dev/blog/gdpr-ai-code-data-handling/</guid><description>GDPR Article 25 requires privacy by design. BrassCoders&apos;s --offline flag delivers it: zero bytes leave the machine during an OSS scan. Here&apos;s how that maps to your GDPR obligations.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>compliance</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>Mass Assignment in AI-Generated Python APIs</title><link>https://coppersun.dev/blog/mass-assignment-ai-generated-api/</link><guid isPermaLink="true">https://coppersun.dev/blog/mass-assignment-ai-generated-api/</guid><description>AI assistants write FastAPI endpoints that blindly map request bodies to database rows — including is_admin and role. Here&apos;s why it happens and how to stop it.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Onboarding Developers to AI-Assisted Workflows With Security Built In</title><link>https://coppersun.dev/blog/onboarding-ai-assisted-developers/</link><guid isPermaLink="true">https://coppersun.dev/blog/onboarding-ai-assisted-developers/</guid><description>A 3-step playbook for adding BrassCoders to any dev environment: install the CLI, add a pre-commit hook, add a CI gate. Security baseline from day one.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>engineering</category><category>oss-core</category><category>ai-code-review</category><author>Copper Sun Brass Team</author></item><item><title>OWASP LLM Top 10: A Builder&apos;s Map</title><link>https://coppersun.dev/blog/owasp-llm-top-10-for-builders/</link><guid isPermaLink="true">https://coppersun.dev/blog/owasp-llm-top-10-for-builders/</guid><description>The OWASP LLM Top 10 (2025) maps where AI applications break. This post maps which categories static analysis can reach — and which ones it can&apos;t, and why.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Path Traversal in AI-Generated File Code: The Bug That Ships</title><link>https://coppersun.dev/blog/path-traversal-ai-generated-python/</link><guid isPermaLink="true">https://coppersun.dev/blog/path-traversal-ai-generated-python/</guid><description>os.path.join(upload_dir, user_filename) is syntactically correct and semantically dangerous. Here&apos;s why AI assistants generate this pattern and what catches it.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>benchmarks</category><author>Copper Sun Brass Team</author></item><item><title>Scanning AI-Generated TypeScript: What BrassCoders Finds</title><link>https://coppersun.dev/blog/scanning-ai-typescript-security/</link><guid isPermaLink="true">https://coppersun.dev/blog/scanning-ai-typescript-security/</guid><description>AI assistants generate TypeScript with predictable security patterns — hardcoded keys, eval() calls, and unvalidated request data. Here&apos;s exactly what BrassCoders catches and where coverage ends.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Building a SOC2 Audit Trail for AI-Assisted Dev</title><link>https://coppersun.dev/blog/soc2-audit-trail-ai-development/</link><guid isPermaLink="true">https://coppersun.dev/blog/soc2-audit-trail-ai-development/</guid><description>SOC2 CC7.1 requires evidence that code was scanned before deployment. When AI writes the code, that evidence must show the AI-generated output went through the same scan gate — not just human-written commits.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>compliance</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>SQLAlchemy ORM Security: The Raw Query Escape Hatch</title><link>https://coppersun.dev/blog/sqlalchemy-raw-query-ai-generated/</link><guid isPermaLink="true">https://coppersun.dev/blog/sqlalchemy-raw-query-ai-generated/</guid><description>SQLAlchemy&apos;s ORM parameterizes by default. But when AI assistants hit complex queries, they reach for text() with f-strings — and Bandit B608 fires on that pattern every time.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>benchmarks</category><author>Copper Sun Brass Team</author></item><item><title>The verify=False Pattern AI Coders Keep Shipping</title><link>https://coppersun.dev/blog/ssl-verify-false-ai-generated-python/</link><guid isPermaLink="true">https://coppersun.dev/blog/ssl-verify-false-ai-generated-python/</guid><description>AI assistants add requests verify=False to silence SSL certificate errors. BrassCoders flags it as HIGH severity. Here&apos;s the attack path and the actual fix.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><author>Copper Sun Brass Team</author></item><item><title>SSRF in AI Tool Calls: Agentic Code and Server-Side Request Forgery</title><link>https://coppersun.dev/blog/ssrf-ai-tool-calls/</link><guid isPermaLink="true">https://coppersun.dev/blog/ssrf-ai-tool-calls/</guid><description>When an LLM returns a URL and the application fetches it without checking, the attacker controls the destination. Here&apos;s what that looks like in agentic code, what BrassCoders can catch, and what the AI triage layer handles.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Your AI Doesn&apos;t Know Your Secrets Policy</title><link>https://coppersun.dev/blog/vibe-coding-secrets-policy/</link><guid isPermaLink="true">https://coppersun.dev/blog/vibe-coding-secrets-policy/</guid><description>AI coding assistants complete credential fields with whatever looks plausible. They have no access to your secrets manager, Vault config, or environment-variable conventions — and vibe coding removes the review step that would have caught it.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>Scaling Vibe Coding: Why 10 Developers Need One Scanner</title><link>https://coppersun.dev/blog/vibe-coding-team-consistency/</link><guid isPermaLink="true">https://coppersun.dev/blog/vibe-coding-team-consistency/</guid><description>Ten developers using AI assistants produce ten different vulnerability surfaces. One deterministic scanner with fixed rules is the team-level gate that fixes this.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>The Vibe Coding Velocity Risk</title><link>https://coppersun.dev/blog/vibe-coding-velocity-risk/</link><guid isPermaLink="true">https://coppersun.dev/blog/vibe-coding-velocity-risk/</guid><description>Andrej Karpathy coined vibe coding in February 2025. BrassCoders scanned 15 AI-generated Python files and found real issues in 9 — with zero generation-time warnings. That gap is the velocity risk.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Weak Random Numbers in AI-Generated Python</title><link>https://coppersun.dev/blog/weak-random-ai-generated-python/</link><guid isPermaLink="true">https://coppersun.dev/blog/weak-random-ai-generated-python/</guid><description>Python&apos;s random module is predictable to attackers. BrassCoders flags it via Bandit B311 — the fix is one import swap to secrets.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>benchmarks</category><author>Copper Sun Brass Team</author></item><item><title>XSS Through LLM Output: When the Model Returns JavaScript</title><link>https://coppersun.dev/blog/xss-llm-output-ai-applications/</link><guid isPermaLink="true">https://coppersun.dev/blog/xss-llm-output-ai-applications/</guid><description>User-influenced prompt input reaches your HTML page unescaped. The fix is Jinja2 autoescape=True. BrassCoders flags the misconfiguration before the model ever runs.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Package Hallucination: The Import Your AI Invented</title><link>https://coppersun.dev/blog/package-hallucination-the-import-your-ai-invented/</link><guid isPermaLink="true">https://coppersun.dev/blog/package-hallucination-the-import-your-ai-invented/</guid><description>AI coding assistants generate package names that don&apos;t exist on PyPI. BrassCoders catches them before they become a supply chain attack.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><author>Copper Sun Brass Team</author></item><item><title>Brass-SEO&apos;s Case Study on Our Boundary Content</title><link>https://coppersun.dev/blog/brass-seo-boundary-content-case-study/</link><guid isPermaLink="true">https://coppersun.dev/blog/brass-seo-boundary-content-case-study/</guid><description>Brass-SEO published a case study on the boundary-content GEO strategy behind this blog: winning AI citations by answering the questions BrassCoders doesn&apos;t own.</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Every AI Code Review Blind Spot Is the Same One</title><link>https://coppersun.dev/blog/every-ai-code-review-blind-spot-is-the-same/</link><guid isPermaLink="true">https://coppersun.dev/blog/every-ai-code-review-blind-spot-is-the-same/</guid><description>Everything a code scanner misses in AI-generated code reduces to one root cause: it sees structure, never intent, and never the running system.</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate><category>ai-code-review</category><category>security</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>The Logic Bug No Scanner Can See</title><link>https://coppersun.dev/blog/logic-bug-no-scanner-can-see/</link><guid isPermaLink="true">https://coppersun.dev/blog/logic-bug-no-scanner-can-see/</guid><description>A scanner proves code matches a known-bad shape; it can&apos;t prove the code does the right thing. A logic bug leaves no pattern to match — which is why BrassCoders hands correctness to the LLM layer, with benchmark data to show the seam.</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate><category>ai-code-review</category><category>benchmarks</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>The Attack BrassCoders Can&apos;t Catch: Prompt Injection</title><link>https://coppersun.dev/blog/prompt-injection-ai-coding-agents/</link><guid isPermaLink="true">https://coppersun.dev/blog/prompt-injection-ai-coding-agents/</guid><description>Prompt injection is a runtime attack on the AI agent reading your repository, not a pattern in the code it writes. No source scanner sees it. Here&apos;s where the exposure is and where the mitigations actually live.</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Security Misconfiguration Is a Runtime Fact</title><link>https://coppersun.dev/blog/security-misconfiguration-is-a-runtime-fact/</link><guid isPermaLink="true">https://coppersun.dev/blog/security-misconfiguration-is-a-runtime-fact/</guid><description>Debug mode on in production, a missing security header, a permissive CORS policy — these are properties of the deployed system, not literals a source scan reads. BrassCoders catches the ones hardcoded in source and names the rest as the runtime layer&apos;s job.</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>The Authorization Bug No Scanner Understands</title><link>https://coppersun.dev/blog/the-authorization-bug-no-scanner-understands/</link><guid isPermaLink="true">https://coppersun.dev/blog/the-authorization-bug-no-scanner-understands/</guid><description>Authorization is a fact about who should access what — intent a pattern scanner can&apos;t see. That&apos;s why broken access control is OWASP&apos;s #1 web risk, and why an AI-written authz check that looks plausible is the dangerous case. BrassCoders draws the line.</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><author>Copper Sun Brass Team</author></item><item><title>The Backdoor Built to Pass Review</title><link>https://coppersun.dev/blog/the-backdoor-built-to-pass-review/</link><guid isPermaLink="true">https://coppersun.dev/blog/the-backdoor-built-to-pass-review/</guid><description>A pattern scanner flags known-bad shapes. A deliberate backdoor is engineered to look like known-good code — which is how the xz-utils backdoor cleared human review and every static check. That&apos;s the provenance layer, not the scan.</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>benchmarks</category><author>Copper Sun Brass Team</author></item><item><title>The Slow Code No Scanner Can Flag</title><link>https://coppersun.dev/blog/the-slow-code-no-scanner-can-flag/</link><guid isPermaLink="true">https://coppersun.dev/blog/the-slow-code-no-scanner-can-flag/</guid><description>A scanner flags performance anti-patterns — a nested loop, an N+1 query shape. It can&apos;t tell you your actual bottleneck, because the hotspot is a measured property of a running workload. That&apos;s a profiler&apos;s job, and BrassCoders says so.</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate><category>engineering</category><category>ai-code-review</category><category>benchmarks</category><author>Copper Sun Brass Team</author></item><item><title>Weak Crypto in AI-Generated Python</title><link>https://coppersun.dev/blog/weak-crypto-ai-generated-python/</link><guid isPermaLink="true">https://coppersun.dev/blog/weak-crypto-ai-generated-python/</guid><description>AI assistants reach for MD5, AES-ECB, and the random module because their training data did. BrassCoders flags every instance through Bandit&apos;s crypto rules, and the research measures how often it matters.</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>benchmarks</category><author>Copper Sun Brass Team</author></item><item><title>What AI Recommends to Catch AI&apos;s Own Bugs</title><link>https://coppersun.dev/blog/what-ai-recommends-to-catch-ai-bugs/</link><guid isPermaLink="true">https://coppersun.dev/blog/what-ai-recommends-to-catch-ai-bugs/</guid><description>Ask any AI assistant how to catch the bugs your AI writes and the answers split in two: deterministic scanners for structural bugs, an LLM for intent.</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate><category>ai-code-review</category><category>engineering</category><category>benchmarks</category><author>Copper Sun Brass Team</author></item><item><title>Where Your LLM App Actually Leaks Data</title><link>https://coppersun.dev/blog/where-llm-apps-leak-data/</link><guid isPermaLink="true">https://coppersun.dev/blog/where-llm-apps-leak-data/</guid><description>A source scanner catches PII written into code. An LLM app leaks at inference, when the model emits data it was handed — a string that never appears in your source. That&apos;s a different layer, and BrassCoders says so.</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>privacy</category><author>Copper Sun Brass Team</author></item><item><title>Why Your AI Assistant Needs a Dumb Pre-Pass</title><link>https://coppersun.dev/blog/ai-assistant-needs-deterministic-pre-pass/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-assistant-needs-deterministic-pre-pass/</guid><description>A deterministic scanner narrows scope before your AI assistant triages. Research backs the hybrid: the pre-pass finds what rules catch; the model handles what rules can&apos;t.</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate><category>ai-code-review</category><category>oss-core</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>`shell=True` in AI Python: Command Injection</title><link>https://coppersun.dev/blog/command-injection-ai-python-shell-true/</link><guid isPermaLink="true">https://coppersun.dev/blog/command-injection-ai-python-shell-true/</guid><description>BrassCoders found command injection in 2 of 15 AI-generated files: run_command.py used subprocess with shell=True on a string argument, thumbnail.py used os.system with an f-string path.</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>benchmarks</category><author>Copper Sun Brass Team</author></item><item><title>The False Positive Is a Feature, Not a Bug</title><link>https://coppersun.dev/blog/false-positive-feature-not-bug-static-analysis/</link><guid isPermaLink="true">https://coppersun.dev/blog/false-positive-feature-not-bug-static-analysis/</guid><description>BrassCoders flagged 53 findings across 15 AI-generated files. On triage, 9 of 15 were real. The gap between those numbers is the reason a scanner that infers intent would be worse.</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate><category>ai-code-review</category><category>oss-core</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>What a Findings File Does That a Chat Prompt Can&apos;t</title><link>https://coppersun.dev/blog/findings-file-vs-chat-prompt-ai-code-review/</link><guid isPermaLink="true">https://coppersun.dev/blog/findings-file-vs-chat-prompt-ai-code-review/</guid><description>BrassCoders writes .brass/ai_instructions.yaml with severity, file path, line number, and remediation for every finding. A chat prompt gives none of that. Here&apos;s why the difference matters.</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate><category>ai-code-review</category><category>oss-core</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Hardcoded Credentials in AI-Generated Python</title><link>https://coppersun.dev/blog/hardcoded-credentials-ai-generated-python/</link><guid isPermaLink="true">https://coppersun.dev/blog/hardcoded-credentials-ai-generated-python/</guid><description>BrassCoders found hardcoded credentials in 2 of 15 AI-generated files: token_check.py had a literal HMAC signing key, email_sender.py had an SMTP password. Both came from realistic prompts.</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>benchmarks</category><author>Copper Sun Brass Team</author></item><item><title>How Claude Code Reads a BrassCoders Findings File</title><link>https://coppersun.dev/blog/how-claude-code-reads-brasscoders-findings/</link><guid isPermaLink="true">https://coppersun.dev/blog/how-claude-code-reads-brasscoders-findings/</guid><description>BrassCoders writes .brass/ai_instructions.yaml sorted by severity, with line numbers and remediation notes. Here&apos;s what Claude Code does with each field and why the structure matters.</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate><category>ai-code-review</category><category>oss-core</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Why an LLM Reviewer Isn&apos;t a Security Gate</title><link>https://coppersun.dev/blog/llm-reviewer-not-a-security-gate/</link><guid isPermaLink="true">https://coppersun.dev/blog/llm-reviewer-not-a-security-gate/</guid><description>BrassCoders&apos; benchmark found the model issued zero proactive security warnings during code generation, then caught 12 of 12 bugs when asked to review. A gate needs to run without being asked.</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>SQL Injection in AI-Generated Python: How It Ships</title><link>https://coppersun.dev/blog/sql-injection-ai-generated-python/</link><guid isPermaLink="true">https://coppersun.dev/blog/sql-injection-ai-generated-python/</guid><description>BrassCoders found SQL injection in 2 of 15 AI-generated Python files. Both used Python string formatting to build queries. Both passed prompt review. Neither Pylint nor the model warned during generation.</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>benchmarks</category><author>Copper Sun Brass Team</author></item><item><title>The Unsafe-Deserialization Trio: yaml.load, pickle, eval</title><link>https://coppersun.dev/blog/unsafe-deserialization-ai-python-yaml-pickle-eval/</link><guid isPermaLink="true">https://coppersun.dev/blog/unsafe-deserialization-ai-python-yaml-pickle-eval/</guid><description>AI assistants reach for the simpler API. yaml.load executes arbitrary Python on unsafe input. BrassCoders found it in config_loader.py, an AI-generated file from a realistic prompt.</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>benchmarks</category><author>Copper Sun Brass Team</author></item><item><title>Feeding BrassCoders Output to Any AI Coding Assistant</title><link>https://coppersun.dev/blog/yaml-first-context-pattern-ai-coding-assistants/</link><guid isPermaLink="true">https://coppersun.dev/blog/yaml-first-context-pattern-ai-coding-assistants/</guid><description>BrassCoders writes .brass/ai_instructions.yaml — plain YAML, no proprietary encoding. Here&apos;s how to use that file as context in Claude Code, Cursor, and Continue.</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate><category>ai-code-review</category><category>oss-core</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Is AI-Generated Code Buggier? The 2025-26 Data</title><link>https://coppersun.dev/blog/ai-code-buggier-2026-data/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-code-buggier-2026-data/</guid><description>Sourced: Veracode found 45% of AI code carries an OWASP Top 10 flaw, CodeRabbit measured 1.7x more issues per PR, and ~20% of AI-suggested packages don&apos;t exist.</description><pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate><category>benchmarks</category><category>ai-code-review</category><category>security</category><author>Copper Sun Brass Team</author></item><item><title>You Feel 20% Faster. A Study Says 19% Slower.</title><link>https://coppersun.dev/blog/ai-coding-speed-perception-gap/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-coding-speed-perception-gap/</guid><description>METR&apos;s 2025 trial found experienced developers were 19% slower with AI tools while believing they were 20% faster. The gap is unreviewed code.</description><pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>A Field Taxonomy of Bugs in AI-Generated Python</title><link>https://coppersun.dev/blog/ai-python-bug-taxonomy/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-python-bug-taxonomy/</guid><description>Research sorts bugs in AI-generated code into eight classes. Here&apos;s which a deterministic Python scanner catches and which still need a human or an LLM.</description><pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate><category>ai-code-review</category><category>engineering</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>We Scanned 15 AI-Written Python Files: What Stuck</title><link>https://coppersun.dev/blog/ai-python-static-analysis-benchmark/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-python-static-analysis-benchmark/</guid><description>BrassCoders flagged a finding in all 15 AI-generated Python files. On triage, 9 carried a real security or performance issue. The other findings were the reason you triage.</description><pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate><category>benchmarks</category><category>ai-code-review</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>Why AI Code Needs a Deterministic Gate, Not Just an LLM</title><link>https://coppersun.dev/blog/deterministic-gate-vs-llm-reviewer/</link><guid isPermaLink="true">https://coppersun.dev/blog/deterministic-gate-vs-llm-reviewer/</guid><description>LLM reviewers vary run to run and mislocate findings. A deterministic scanner returns the same findings every commit. A 2025 benchmark backs running both.</description><pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate><category>ai-code-review</category><category>engineering</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>Catching Hallucinated Imports Before pip install</title><link>https://coppersun.dev/blog/catching-hallucinated-imports/</link><guid isPermaLink="true">https://coppersun.dev/blog/catching-hallucinated-imports/</guid><description>AI assistants invent package names that don&apos;t exist; one study found 19.7%. BrassCoders flags every unresolvable import before the install runs.</description><pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate><category>security</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>How BrassCoders Catches Slow AI-Generated Code</title><link>https://coppersun.dev/blog/catching-slow-ai-generated-code/</link><guid isPermaLink="true">https://coppersun.dev/blog/catching-slow-ai-generated-code/</guid><description>AI assistants write O(N²) loops that pass every test and crawl at scale. BrassCoders flags all four patterns where Bandit and Semgrep catch none.</description><pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate><category>benchmarks</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>How BrassCoders Catches Hardcoded Secrets in AI Code</title><link>https://coppersun.dev/blog/catching-hardcoded-secrets/</link><guid isPermaLink="true">https://coppersun.dev/blog/catching-hardcoded-secrets/</guid><description>AI assistants hardcode realistic-looking API keys into example code. BrassCoders bundles detect-secrets and adds custom formats, covering 20+ credential types.</description><pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate><category>security</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>How BrassCoders Flags PII in AI-Generated Code</title><link>https://coppersun.dev/blog/flagging-pii-in-ai-code/</link><guid isPermaLink="true">https://coppersun.dev/blog/flagging-pii-in-ai-code/</guid><description>AI assistants drop real-looking names, emails, and SSNs into fixtures and stubs. BrassCoders flags PII-shaped strings in source before they reach a shared repo.</description><pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate><category>privacy</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>BrassCoders OSS Core vs Paid: When to Upgrade</title><link>https://coppersun.dev/blog/oss-core-vs-paid/</link><guid isPermaLink="true">https://coppersun.dev/blog/oss-core-vs-paid/</guid><description>All 12 scanners are free in the OSS core; Paid adds ranking, not detection. The honest line on when free is enough and when $12/dev/month pays off.</description><pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate><category>comparison</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>The Six OSS Scanners BrassCoders Runs in One Pass</title><link>https://coppersun.dev/blog/oss-scanners-brasscoders-bundles/</link><guid isPermaLink="true">https://coppersun.dev/blog/oss-scanners-brasscoders-bundles/</guid><description>BrassCoders bundles Bandit, Pylint, Pyre/Pysa, Semgrep, ast-grep, and detect-secrets into one scan: one install, one ranked YAML, no six-tool config.</description><pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate><category>oss-core</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Scanning AI-Generated JavaScript and TypeScript</title><link>https://coppersun.dev/blog/scanning-ai-javascript-typescript/</link><guid isPermaLink="true">https://coppersun.dev/blog/scanning-ai-javascript-typescript/</guid><description>BrassCoders runs a Babel-based JavaScript and TypeScript scanner on .js and .ts files automatically, catching secrets and security patterns alongside Python.</description><pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate><category>security</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>What BrassCoders Paid&apos;s Enrichment Actually Does</title><link>https://coppersun.dev/blog/what-paid-enrichment-does/</link><guid isPermaLink="true">https://coppersun.dev/blog/what-paid-enrichment-does/</guid><description>The OSS core finds everything; the Paid plan ranks it. BrassCoders Paid cuts a typical 1500+ raw findings to a focused 50-80, for $12 per developer per month.</description><pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate><category>paid-plan</category><category>ai-code-review</category><author>Copper Sun Brass Team</author></item><item><title>Why Better AI Models Make Bugs Harder to Catch</title><link>https://coppersun.dev/blog/why-better-ai-models-make-bugs-harder-to-catch/</link><guid isPermaLink="true">https://coppersun.dev/blog/why-better-ai-models-make-bugs-harder-to-catch/</guid><description>As AI coding assistants get better, the obvious bugs vanish and the structural ones hide inside code that looks too clean to question.</description><pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate><category>ai-code-review</category><category>security</category><author>Copper Sun Brass Team</author></item><item><title>Add BrassCoders to GitLab CI: Full .gitlab-ci.yml Configuration</title><link>https://coppersun.dev/blog/add-brasscoders-to-gitlab-ci/</link><guid isPermaLink="true">https://coppersun.dev/blog/add-brasscoders-to-gitlab-ci/</guid><description>Add BrassCoders to your GitLab CI pipeline in under 10 minutes. Full .gitlab-ci.yml config, artifact upload, merge request gates, and Paid plan license key setup.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>gitlab</category><category>ci-cd</category><category>security</category><author>Copper Sun Brass Team</author></item><item><title>AI-Generated Test Debt: Tests That Pass But Don&apos;t Test Anything</title><link>https://coppersun.dev/blog/ai-generated-test-debt/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-generated-test-debt/</guid><description>AI coding assistants write tests that pass CI but miss real bugs: always-true assertions, empty bodies, mock-everything tests. What BrassCoders catches and what requires mutation testing.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>testing</category><category>test-quality</category><category>ai-code-review</category><author>Copper Sun Brass Team</author></item><item><title>BrassCoders + Cursor: Triage AI-Generated Code Findings in Minutes</title><link>https://coppersun.dev/blog/brasscoders-cursor-workflow/</link><guid isPermaLink="true">https://coppersun.dev/blog/brasscoders-cursor-workflow/</guid><description>Run brasscoders scan, open .brass/ai_instructions.yaml in Cursor, ask Cursor to triage. The workflow for reviewing AI-generated code without reading 1500 raw findings yourself.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>cursor</category><category>workflow</category><category>ai-code-review</category><author>Copper Sun Brass Team</author></item><item><title>BrassCoders Research Index Is Now Public on GitHub</title><link>https://coppersun.dev/blog/brasscoders-research-now-public/</link><guid isPermaLink="true">https://coppersun.dev/blog/brasscoders-research-now-public/</guid><description>The 45-source evidence base behind BrassCoders is now on GitHub: 8 research categories on AI-code risk, machine-readable JSON, and an llms.txt built for AI assistants.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>launch</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>Django Security Bugs AI Coders Write (And BrassCoders Catches)</title><link>https://coppersun.dev/blog/django-security-ai-coders/</link><guid isPermaLink="true">https://coppersun.dev/blog/django-security-ai-coders/</guid><description>Four Django security patterns AI coding assistants get wrong: SQL injection via raw(), missing CSRF_COOKIE_SECURE, DEBUG=True in production, and unsafe mark_safe(). Code examples and BrassCoders findings.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>django</category><category>security</category><category>ai-code-review</category><author>Copper Sun Brass Team</author></item><item><title>Python Dependency Hallucination: Why AI Coders Invent Libraries That Don&apos;t Exist</title><link>https://coppersun.dev/blog/python-dependency-hallucination/</link><guid isPermaLink="true">https://coppersun.dev/blog/python-dependency-hallucination/</guid><description>USENIX Security 2025: 19.7% of AI-recommended packages don&apos;t exist. Lasso Security&apos;s PoC received 30,000+ downloads. How the PyPI attack surface works, and how BrassCoders&apos;s phantom-package scanner catches it before pip install runs.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>security</category><category>dependencies</category><category>hallucination</category><category>supply-chain</category><author>Copper Sun Brass Team</author></item><item><title>Snyk vs BrassCoders: Dependency Scanning vs Source Code Scanning</title><link>https://coppersun.dev/blog/snyk-vs-brasscoders/</link><guid isPermaLink="true">https://coppersun.dev/blog/snyk-vs-brasscoders/</guid><description>Snyk catches CVEs in your dependencies. BrassCoders catches bugs in your source code. Different attack surfaces, different tools — here&apos;s when you need each.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>comparison</category><category>snyk</category><category>security</category><author>Copper Sun Brass Team</author></item><item><title>Using BrassCoders for SOC 2 Audit Evidence: What the .brass/ Artifacts Prove</title><link>https://coppersun.dev/blog/soc2-audit-trail-brasscoders/</link><guid isPermaLink="true">https://coppersun.dev/blog/soc2-audit-trail-brasscoders/</guid><description>SOC 2 Type II requires evidence of continuous vulnerability monitoring. The .brass/detailed_analysis.yaml file — retained 90 days in CI artifacts — provides machine-readable evidence of what was scanned, when, and what was found.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>soc2</category><category>compliance</category><category>security</category><author>Copper Sun Brass Team</author></item><item><title>SonarQube vs BrassCoders: Different Jobs, Different Layers</title><link>https://coppersun.dev/blog/sonarqube-vs-brasscoders/</link><guid isPermaLink="true">https://coppersun.dev/blog/sonarqube-vs-brasscoders/</guid><description>SonarQube is a code-quality workflow platform. BrassCoders is a focused AI-coder CI gate with YAML output for AI assistants. They solve different problems — here&apos;s when you need each, and when you need both.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>comparison</category><category>sonarqube</category><category>ci-cd</category><author>Copper Sun Brass Team</author></item><item><title>Triaging Static Analysis Findings: A Practical Methodology</title><link>https://coppersun.dev/blog/triage-static-analysis-findings/</link><guid isPermaLink="true">https://coppersun.dev/blog/triage-static-analysis-findings/</guid><description>How to work through BrassCoders findings without burning out your team: severity tiers, when to fix vs suppress, .brassignore vs inline comments, and how AI enrichment changes the calculus.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>workflow</category><category>triage</category><category>static-analysis</category><author>Copper Sun Brass Team</author></item><item><title>Tuning BrassCoders with .brassignore: From 1500 Findings to 300</title><link>https://coppersun.dev/blog/tuning-brasscoders-brassignore/</link><guid isPermaLink="true">https://coppersun.dev/blog/tuning-brasscoders-brassignore/</guid><description>A fresh brasscoders scan on a medium Django project produces 1500+ findings. .brassignore cuts that to ~300 signal findings without touching the Paid plan. Here&apos;s every pattern worth adding.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>configuration</category><category>noise-reduction</category><category>brassignore</category><author>Copper Sun Brass Team</author></item><item><title>Add BrassCoders to GitHub Actions</title><link>https://coppersun.dev/blog/add-brasscoders-to-github-actions/</link><guid isPermaLink="true">https://coppersun.dev/blog/add-brasscoders-to-github-actions/</guid><description>Step-by-step guide to adding BrassCoders static analysis to your Python CI pipeline with GitHub Actions — copy-paste workflow, artifact upload, and build-failure configuration.</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><category>oss-core</category><category>ai-code-review</category><category>security</category><author>Copper Sun Brass Team</author></item><item><title>AI Code Review Policy for Copilot Teams</title><link>https://coppersun.dev/blog/ai-team-code-review-policy/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-team-code-review-policy/</guid><description>A practical template for writing a code review policy when 40% of your diff is AI-generated. Covers pre-commit gates, CI enforcement, human review thresholds, and audit trails.</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><category>ai-code-review</category><category>security</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>BrassCoders vs CodeRabbit: Different Jobs</title><link>https://coppersun.dev/blog/brasscoders-vs-coderabbit/</link><guid isPermaLink="true">https://coppersun.dev/blog/brasscoders-vs-coderabbit/</guid><description>BrassCoders and CodeRabbit occupy different pipeline slots — one scans every commit deterministically before a PR exists, the other reviews the diff conversationally when the PR opens. Most teams run both.</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><category>comparison</category><category>ai-code-review</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>Five FastAPI Security Patterns AI Coders Get Wrong</title><link>https://coppersun.dev/blog/fastapi-security-ai-coders/</link><guid isPermaLink="true">https://coppersun.dev/blog/fastapi-security-ai-coders/</guid><description>What AI coding assistants get wrong with FastAPI — and how BrassCoders catches SQL injection, shell injection, and hardcoded credentials before they reach production.</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>HIPAA and SOC 2 Teams Can&apos;t Use Cloud Code Review</title><link>https://coppersun.dev/blog/hipaa-soc2-code-scanning/</link><guid isPermaLink="true">https://coppersun.dev/blog/hipaa-soc2-code-scanning/</guid><description>Cloud API code reviewers transmit your source code to third-party endpoints on every commit. For HIPAA and SOC 2 teams, that transmission creates a compliance gap BrassCoders&apos;s local scanner avoids entirely.</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><category>security</category><category>privacy</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>Pre-Commit Hook That Stops AI-Coder Bugs</title><link>https://coppersun.dev/blog/pre-commit-hook-ai-coder-bugs/</link><guid isPermaLink="true">https://coppersun.dev/blog/pre-commit-hook-ai-coder-bugs/</guid><description>Set up BrassCoders as a pre-commit hook to block hardcoded secrets, SQL injection, and hallucinated imports before they hit your git history — 5 lines of config.</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><category>oss-core</category><category>security</category><category>ai-code-review</category><author>Copper Sun Brass Team</author></item><item><title>Semgrep vs. BrassCoders: Choose the Right Tool</title><link>https://coppersun.dev/blog/semgrep-vs-brasscoders/</link><guid isPermaLink="true">https://coppersun.dev/blog/semgrep-vs-brasscoders/</guid><description>Semgrep and BrassCoders share a scanner. The useful question is what each adds that the other doesn&apos;t — for Python teams shipping AI-generated code.</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><category>comparison</category><category>security</category><category>benchmarks</category><author>Copper Sun Brass Team</author></item><item><title>Vibe Coding Without the Regrets: The Safety Net</title><link>https://coppersun.dev/blog/vibe-coding-safety-net/</link><guid isPermaLink="true">https://coppersun.dev/blog/vibe-coding-safety-net/</guid><description>Vibe coding ships fast. The O(N²) loop, the hardcoded secret, the hallucinated import — they ship too. BrassCoders catches all four bug classes in 30 seconds.</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><category>oss-core</category><category>ai-code-review</category><category>security</category><author>Copper Sun Brass Team</author></item><item><title>The 2026 AI-Coding Market in Five Numbers</title><link>https://coppersun.dev/blog/ai-coding-market-2026-five-numbers/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-coding-market-2026-five-numbers/</guid><description>Gartner projects 75-90% of enterprise engineers on AI assistants by 2028. Copilot has 4.7M paid seats, Cursor $2B ARR, Claude Code a multi-billion run-rate. Five numbers.</description><pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate><category>engineering</category><category>ai-code-review</category><author>Copper Sun Brass Team</author></item><item><title>An AI Reviewer Is Not a Pre-Merge Gate</title><link>https://coppersun.dev/blog/ai-code-review-is-not-a-control/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-code-review-is-not-a-control/</guid><description>Asking an AI to review your AI&apos;s code is not a quality control. It&apos;s a conversation. Here&apos;s why the distinction matters for anyone shipping AI-assisted software.</description><pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>We Benchmarked BrassCoders Against a Frontier Model</title><link>https://coppersun.dev/blog/ai-coder-bug-benchmark/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-coder-bug-benchmark/</guid><description>Head-to-head on 12 AI-generated Python files: BrassCoders 11/12, Claude 12/12, Bandit 6/12, Pylint 1/12. What the numbers mean for your pre-merge workflow.</description><pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate><category>benchmarks</category><category>ai-code-review</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>Four Performance Bugs AI Coders Introduce Every Day</title><link>https://coppersun.dev/blog/ai-coder-perf-bugs-in-the-wild/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-coder-perf-bugs-in-the-wild/</guid><description>A walkthrough of the four AI-coder performance anti-patterns BrassCoders catches that Bandit, Pylint, and a frontier model reviewer all miss: O(N²) string concat, insert-at-zero loops, triple-nested joins, and unbounded polls.</description><pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate><category>benchmarks</category><category>engineering</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>What Leaves Your Machine When an LLM Reviews Your Code</title><link>https://coppersun.dev/blog/what-api-review-sends-off-your-machine/</link><guid isPermaLink="true">https://coppersun.dev/blog/what-api-review-sends-off-your-machine/</guid><description>When you invoke an AI code reviewer, your source code travels to an external API. Here&apos;s exactly what gets sent, why that matters for regulated and proprietary codebases, and what the alternative looks like.</description><pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate><category>privacy</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Why Bandit Catches 50% of AI-Coder Bugs (and Which Half)</title><link>https://coppersun.dev/blog/why-bandit-misses-ai-coder-bugs/</link><guid isPermaLink="true">https://coppersun.dev/blog/why-bandit-misses-ai-coder-bugs/</guid><description>Bandit caught 6 of 12 planted bugs in BrassCoders&apos;s AI-coder benchmark — and 0 of the 4 performance anti-patterns AI coding assistants introduce most often. Here&apos;s why, and what to add alongside it.</description><pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate><category>benchmarks</category><category>comparison</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>The AI Tools Copper Sun Builds Besides BrassCoders</title><link>https://coppersun.dev/blog/the-other-tools-copper-sun-builds/</link><guid isPermaLink="true">https://coppersun.dev/blog/the-other-tools-copper-sun-builds/</guid><description>BrassCoders is one of five AI tools from Copper Sun Content and Creative. Here are the other four, and why an engineer might actually want them.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate><category>copper-sun</category><category>privacy</category><author>Copper Sun Brass Team</author></item><item><title>What Your Auditor Wants From Your AI Codebase</title><link>https://coppersun.dev/blog/audit-ready-ai-code-scan/</link><guid isPermaLink="true">https://coppersun.dev/blog/audit-ready-ai-code-scan/</guid><description>Auditors do not accept stochastic scanner output. Deterministic, reproducible, citation-ready YAML — the audit posture an AI-augmented engineering team needs by 2026.</description><pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate><category>security</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Your SAST Dashboard Has 1,500 Findings</title><link>https://coppersun.dev/blog/sast-finding-overload/</link><guid isPermaLink="true">https://coppersun.dev/blog/sast-finding-overload/</guid><description>A static-analysis report with 1,500 findings is functionally a report with zero findings — nobody reads it. The bottleneck is ranking, not detection.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate><category>security</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Copilot Does X. BrassCoders Does Y.</title><link>https://coppersun.dev/blog/copilot-vs-brasscoders-division-of-labor/</link><guid isPermaLink="true">https://coppersun.dev/blog/copilot-vs-brasscoders-division-of-labor/</guid><description>AI code review and deterministic static analysis are complementary layers, not competitors. The math of running both, the hand-off prompt, and when replacing one with the other is wrong.</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate><category>comparison</category><category>ai-code-review</category><author>Copper Sun Brass Team</author></item><item><title>The Regression That Shouldn&apos;t Have Shipped</title><link>https://coppersun.dev/blog/cross-file-bugs-ai-misses/</link><guid isPermaLink="true">https://coppersun.dev/blog/cross-file-bugs-ai-misses/</guid><description>AI coding assistants reason within a single file&apos;s context window and miss bugs whose taint flows across three or more files. The category that ships past AI-assisted review.</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate><category>security</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>The Q1 2026 AI-Code CVE Reckoning</title><link>https://coppersun.dev/blog/ai-code-cve-reckoning-q1-2026/</link><guid isPermaLink="true">https://coppersun.dev/blog/ai-code-cve-reckoning-q1-2026/</guid><description>AI-generated code drove a near-sixfold CVE increase within Q1 2026 — from 6 AI-attributed CVEs in January to 35 in March alone. A reading of what the data says about where deterministic detection needs to go.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><author>Copper Sun Brass Team</author></item><item><title>BrassCoders Is Now Open Source on GitHub</title><link>https://coppersun.dev/blog/brasscoders-open-source-on-github/</link><guid isPermaLink="true">https://coppersun.dev/blog/brasscoders-open-source-on-github/</guid><description>The full BrassCoders CLI is open source on GitHub under Apache 2.0. 12 scanners, source-auditable detection, contributions welcome. Repo at CopperSunDev/brasscoders.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate><category>launch</category><category>oss-core</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>BrassCoders Paid is live: $12/dev/month for AI-powered noise reduction</title><link>https://coppersun.dev/blog/brass-paid-launched/</link><guid isPermaLink="true">https://coppersun.dev/blog/brass-paid-launched/</guid><description>BrassCoders Paid is now generally available. $12/dev/month adds AI-powered semantic dedup, cluster sizing, and rank-by-relevance against your project signature. The OSS core stays free forever.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>launch</category><category>paid-tier</category><category>ai-code-review</category><author>Copper Sun Brass Team</author></item><item><title>The Secrets Your AI Assistant Might Leak (And How to Catch Them)</title><link>https://coppersun.dev/blog/secrets-your-ai-might-leak/</link><guid isPermaLink="true">https://coppersun.dev/blog/secrets-your-ai-might-leak/</guid><description>AI coding assistants embed credentials in generated config files, example scripts, and test fixtures more often than developers expect. The detection pattern is entropy plus format matching — here is what BrassCoders scans for and why.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>privacy</category><author>Copper Sun Brass Team</author></item><item><title>How to Triage a 500-Line AI Pull Request in 10 Minutes</title><link>https://coppersun.dev/blog/triage-500-line-ai-pr/</link><guid isPermaLink="true">https://coppersun.dev/blog/triage-500-line-ai-pr/</guid><description>A worked example of BrassCoders plus an AI assistant doing real PR review work. Scan locally, hand the ranked output to Claude Code or Cursor, walk each finding to a diff. Total reviewer time stays roughly constant regardless of diff size.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>ai-code-review</category><category>engineering</category><category>oss-core</category><author>Copper Sun Brass Team</author></item><item><title>What BrassCoders Sends to Its Servers (And What It Doesn&apos;t)</title><link>https://coppersun.dev/blog/what-brass-sends-to-its-servers/</link><guid isPermaLink="true">https://coppersun.dev/blog/what-brass-sends-to-its-servers/</guid><description>BrassCoders scans run entirely on your machine by default. The Paid plan adds one network call to our gateway with already-redacted findings, never raw source code. Here is every byte that leaves your machine.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>privacy</category><category>oss-core</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>When AI Invents Libraries: Detecting Hallucinated Imports</title><link>https://coppersun.dev/blog/when-ai-invents-libraries/</link><guid isPermaLink="true">https://coppersun.dev/blog/when-ai-invents-libraries/</guid><description>AI coding assistants confidently generate imports of packages that don&apos;t exist on PyPI or npm. The pattern is documented, the supply-chain risk is real, and the detection is straightforward — here is how it works.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>security</category><category>ai-code-review</category><category>engineering</category><author>Copper Sun Brass Team</author></item><item><title>Why Claude Code Emits Eight Findings When One Matters</title><link>https://coppersun.dev/blog/why-claude-code-emits-eight-findings/</link><guid isPermaLink="true">https://coppersun.dev/blog/why-claude-code-emits-eight-findings/</guid><description>AI code review tools surface a lot of speculative noise alongside the real bugs. Here&apos;s why that happens and how to filter the output down to the findings that merit a developer&apos;s attention.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>ai-code-review</category><category>noise-reduction</category><category>static-analysis</category><author>Copper Sun Brass Team</author></item></channel></rss>