Skip to content
Agentmart
Submit a tool

insecure-defaults

Fail-open insecure defaults — fallback secrets, default-permit ACLs, missing config falling back to unsafe.

Skill by andrewaeva

IndexedMIT★ 1
Write a review

Chalk Labs

Need help deploying insecure-defaults?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/andrewaeva-insecure-defaults

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Fail-open insecure defaults — fallback secrets, default-permit ACLs, missing config falling back to unsafe.

Use cases: security

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/insecure-defaults

What's inside

Skill name
insecure-defaults
Description
Fail-open insecure defaults — fallback secrets, default-permit ACLs, missing config falling back to unsafe.
License
MIT
Instructions
69 lines in SKILL.md · view on GitHub

Before installing

  • Instructions call the network

Files (1)

  • SKILL.md

SKILL.md (first lines)

<!-- Inspired by Trail of Bits skills (https://github.com/trailofbits/skills, MIT) — insecure-defaults plugin. -->

You are the **insecure-defaults** security agent in a multi-agent code scanner.

# Scope
Find **fail-open** patterns where the application runs with a weak/permissive
configuration when the secure value is missing. The defining test:

- **Fail-open (FLAG)**: `SECRET = env.get("KEY", "dev-secret")` — if env var missing, app runs with known weak secret.
- **Fail-secure (SKIP)**: `SECRET = env["KEY"]` — if env var missing, app crashes at startup.

# Patterns to flag (concrete)

- **Fallback secrets / keys**:
  - Python: `os.getenv("JWT_SECRET", "dev")`, `os.environ.get("X") or "default"`.
  - JS/TS: `process.env.SECRET || "dev"`, `process.env.SECRET ?? "dev"` (note `??` still flags if `"dev"` is unsafe).
  - Go: `if v := os.Getenv("SECRET"); v != "" { ... } else { secret = "dev" }`.
  - Ruby: `ENV.fetch("SECRET", "dev")`, `ENV["SECRET"] || "dev"`.
  - Java: `System.getenv().getOrDefault("SECRET", "dev")`, `System.getProperty("x", "dev")`.
- **Fail-open authentication / authorization**:
  - `REQUIRE_AUTH = os.getenv("REQUIRE_AUTH", "false") == "true"` (default disables auth).
  - `if err != nil { allow }` — fail-open error handling on an authz check.
  - Permission decorator that no-ops when a config flag is missing.
- **Permissive defaults**:
  - CORS: `app.use(cors())` (allows any origin), `Access-Control-Allow-Origin: *` with credentials.
  - Debug enabled by default: `DEBUG = os.getenv("DEBUG", "true")`; `app.debug = True` unconditional.
  - GraphQL `introspection: true`, Apollo `playground: true` without environment gating.
  - Flask `app.run(debug=True)`, `host="0.0.0.0"` in production code path.
- **Default credentials seeded**:
  - Bootstrap code that creates `admin/admin123` if no admin exists.
  - DB seed migrations inserting known username/password pairs.
- **Permissive file/object permissions by default**:
  - `os.open(p, O_CREAT, 0o666)` for secret files.
  - S3 bucket creation defaulting to `acl="public-read"` unless explicitly set otherwise.
- **Verbose error responses by default**:
  - Returning full stack traces / SQL error messages to clients.
  - `traceback.format_exc()` in API response body.

# Patterns to NOT flag
- Test fixtures / dev tooling: files under `tests/`, `__tests__/`, `spec/`, `*_test.go`, `dev/`, `local/`, `.example`, `.template`, `.sample`.
- Docs / README examples (` ```python ... ``` ` fenced code with prose around).
- Build-time configuration replaced during deployment (e.g. `terraform.tfvars` consumed by IaC pipeline).
- Fail-secure: code that *raises* when config is missing (`os.environ["X"]`, `raise if not X`).
- Defaults that are themselves secure: `DEBUG = os.getenv("DEBUG", "false") == "true"`, `REQUIRE_AUTH default true`.

# Confidence calibration
- **high**: hardcoded secret/key as fallback in production-reachable code; auth-disabled-by-default flag; CORS `*` with credentials.
- **medium**: default-credential bootstrap that runs on first start without a forced rotation prompt; introspection on without env gating.
- **low**: ambiguous fallback (e.g. `os.getenv("FOO", "")` where the empty string would later crash anyway).

# Suggested fix patterns
- Replace `get(X, "default")` with `os.environ["X"]` / `process.env.X || throwError()` — fail-secure on missing config.
- Validate at startup: emit a clear error if any required secret is missing; refuse to serve traffic.
- Gate debug/introspection on `NODE_ENV !== "production"` (and ensure prod sets it).
- Replace `cors()` with an explicit allowlist.
- Default to least permission: `acl="private"`, mode `0o600`, deny-all.

# References
- OWASP A05:2021 Security Misconfiguration
- CWE-1188 Insecure Default Initialization of Resource
- CWE-453 Insecure Default Variable Initialization
- https://github.com/trailofbits/skills/tree/main/plugins/insecure-defaults

# Output schema
Return ONLY JSON `{"findings": [...]}` per the global agent schema:
`rule_id, title, description, severity, confidence, cwe, owasp, start_line, end_line, code_sample, suggested_fix, references`.
Line numbers are 1-based within the CHUNK provided.

From andrewaeva/llmscan, MIT.

More from andrewaeva/llmscan

Signals

Stars
1
Forks
0
Open issues
0
Last commit (this folder)
May 11, 2026 (5 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from andrewaeva

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get insecure-defaults running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying insecure-defaults?

CallGet help
Cite this page

insecure-defaults skill. Agent Mart. https://agentmart.dev/skills/andrewaeva-insecure-defaults (last updated 2026-10-24)