Skip to content

chore(release): v0.18.2 - #276

Merged
ralyodio merged 1 commit into
mainfrom
release/v0.18.2
Aug 3, 2026
Merged

chore(release): v0.18.2#276
ralyodio merged 1 commit into
mainfrom
release/v0.18.2

Conversation

@ralyodio

@ralyodio ralyodio commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Three commits have been sitting unreleased on main since v0.18.1.

What's in it

#272install.sh refuses a root install instead of doing the wrong one.

Every path in install.sh derives from $HOME. Under sudo that is /root, mode 0700, so sudo curl … | sh put the payload in /root/.moshcode and both wrappers in /root/.local/bin — where the user who typed the command cannot read them. Nothing failed at install time. It reported success and surfaced much later as:

$ moshcode install secrets
zsh: permission denied: moshcode

Now refused up front, before the download. A bare root shell (containers, CI images) has no SUDO_USER and stays legitimate; MOSHCODE_ALLOW_ROOT overrides.

#274dns escalates itself, and update refuses to run escalated.

The same trap from the other end. dns enable genuinely needs root, and it told the operator to run sudo moshcode dns enable. Correct for dns, dangerous everywhere else: moshcode update self-updates by re-running the installer, whose paths come from $HOME. The habit dns taught turned update into a silent reinstall into root's home.

dns now re-runs its own argv under sudo/doas with stdio inherited, so only the privileged command is raised. Where escalation isn't possible it falls back to exactly the advice printed before, so nothing that worked stops working.

#273 — the /prd healthy-cwd test no longer launches a real engine.

It was spawning Claude for real and blocking until it finished authoring a PRD. Suite: 479s → ~70s.

Verified

1319 tests, 1316 pass, 0 fail, 3 skipped. moshcode --version reports 0.18.2.

Version lives only in package.json and is read at runtime, so nothing else needed touching.

Not an npm package — this is a tag and GitHub release; distribution is via install.sh.

🤖 Generated with Claude Code

Three commits have been sitting unreleased on main, two of them the same
trap seen from both ends: an install that succeeds into the wrong home.

  #272  install.sh refuses `sudo curl … | sh` up front, before the
        download, instead of writing the payload into /root/.moshcode
        where the user who typed the command cannot read it.

  #274  `dns` escalates itself per command rather than telling the
        operator to `sudo moshcode …` — advice that was right for dns
        and dangerous for `update`, which self-updates through the
        installer and so reinstalls into root's home.

  #273  the /prd healthy-cwd test no longer launches a real engine; the
        suite went from 479s to ~70s.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown

ThreatCrush Security Scan

87 finding(s)

HIGH/CRITICAL: 50 | MEDIUM: 37

Severity Rule Location
HIGH manifest-typosquat apps/pwa/package.json:19
HIGH js-ssrf-outbound-request apps/pwa/public/sw.js:45
HIGH secret-generic-credential apps/pwa/test/apikey-bearer-scheme.test.mjs:30
HIGH secret-generic-credential apps/pwa/test/apikey-mask.test.mjs:38
HIGH secret-generic-credential apps/pwa/test/apikey-reveal.test.mjs:35
HIGH secret-generic-credential apps/pwa/test/approvals-context.test.mjs:28
HIGH secret-generic-credential apps/pwa/test/approvals-credits.test.mjs:28
HIGH secret-generic-credential apps/pwa/test/approvals-notify.test.mjs:26
HIGH secret-generic-credential apps/pwa/test/approvals-resolve-race.test.mjs:20
HIGH secret-generic-credential apps/pwa/test/auth-form-email.test.mjs:29
HIGH secret-generic-credential apps/pwa/test/auth-form-email.test.mjs:33
HIGH secret-generic-credential apps/pwa/test/auth-page-error.test.mjs:36
HIGH secret-generic-credential apps/pwa/test/cli-device-token.test.mjs:28
HIGH secret-generic-credential apps/pwa/test/cli-pages-balance.test.mjs:32
HIGH secret-generic-credential apps/pwa/test/cli-token.test.mjs:28
HIGH secret-generic-credential apps/pwa/test/credits-pack.test.mjs:51
HIGH secret-generic-credential apps/pwa/test/credits-webhook-event-match.test.mjs:35
HIGH secret-generic-credential apps/pwa/test/credits-webhook.test.mjs:28
HIGH secret-generic-credential apps/pwa/test/csrf-input-escaping.test.mjs:31
HIGH secret-generic-credential apps/pwa/test/csrf-input-escaping.test.mjs:101
HIGH secret-generic-credential apps/pwa/test/logout-csrf.test.mjs:29
HIGH secret-generic-credential apps/pwa/test/moshpit-api-key.test.mjs:28
HIGH secret-generic-credential apps/pwa/test/moshpit-bulk-claim.test.mjs:23
HIGH secret-generic-credential apps/pwa/test/moshpit-claim-full-name.test.mjs:29
HIGH secret-generic-credential apps/pwa/test/moshpit-crawlable.test.mjs:28
HIGH secret-generic-credential apps/pwa/test/moshpit-ending-page.test.mjs:28
HIGH secret-generic-credential apps/pwa/test/moshpit-pins.test.mjs:22
HIGH secret-generic-credential apps/pwa/test/moshpit-pit-page.test.mjs:33
HIGH secret-generic-credential apps/pwa/test/moshpit-records-page.test.mjs:23
HIGH secret-generic-credential apps/pwa/test/moshpit-records.test.mjs:23
HIGH secret-generic-credential apps/pwa/test/moshpit-registry.test.mjs:20
HIGH secret-generic-credential apps/pwa/test/moshpit-related-endings.test.mjs:28
HIGH secret-generic-credential apps/pwa/test/moshpit-sales.test.mjs:16
HIGH secret-generic-credential apps/pwa/test/moshpit-search.test.mjs:74
HIGH secret-generic-credential apps/pwa/test/moshpit-terms.test.mjs:19
HIGH secret-generic-credential apps/pwa/test/moshpit-tlds-pagination.test.mjs:28
HIGH secret-generic-credential apps/pwa/test/passkey-register-duplicate.test.mjs:38
HIGH secret-generic-credential apps/pwa/test/require-auth-next.test.mjs:31
HIGH secret-generic-credential apps/pwa/test/require-auth-next.test.mjs:35
HIGH secret-generic-credential apps/pwa/test/sessions-output-seq.test.mjs:30
HIGH secret-generic-credential apps/pwa/test/sessions-paste.test.mjs:24
HIGH secret-generic-credential apps/pwa/test/sessions-stream-replay.test.mjs:34
HIGH secret-generic-credential apps/pwa/test/sessions.test.mjs:24
HIGH secret-generic-credential apps/pwa/test/signature.test.mjs:6
HIGH secret-generic-credential test/auth.test.mjs:13
HIGH secret-generic-credential test/auth.test.mjs:63
HIGH secret-generic-credential test/console-cookie-malformed.test.mjs:15
HIGH secret-generic-credential test/console.test.mjs:12
HIGH secret-generic-credential test/mirror.test.mjs:37
HIGH secret-generic-credential test/mirror.test.mjs:77

…and 37 more. Full results in the Security tab.

Snippets are redacted; ThreatCrush never prints matched credential material.

@ralyodio
ralyodio merged commit 0ab56aa into main Aug 3, 2026
4 checks passed
@ralyodio
ralyodio deleted the release/v0.18.2 branch August 3, 2026 17:16
ralyodio added a commit that referenced this pull request Aug 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant