Commit graph

816 commits

Author SHA1 Message Date
mohammad junayd
a91b390b44 fix(install): delay PATH cleanup until after verified install
Do not remove pipx or other strix copies before checksum and
provenance succeed, so a failed verify cannot leave the user
with no working binary (#1267).
2026-09-14 18:09:49 +04:00
mohammad junayd
dbb0a58466 style(tests): apply ruff format to install script tests 2026-09-14 17:57:46 +04:00
mohammad junayd
9ff957b7eb docs: add manual release checksum and provenance checks
Document verify steps in quickstart and prepend them to generated
release notes (#1267).
2026-09-14 17:54:06 +04:00
mohammad junayd
0d2407e71a docs: add manual release checksum and provenance checks
Document verify steps in quickstart and prepend them to generated
release notes (#1267).
2026-09-14 17:51:44 +04:00
mohammad junayd
6a3ad2ae3e test(ci): lock release checksum and attestation workflow
Assert the build-release job signs artifacts, publishes bundles,
and generates SHA256SUMS without hashing provenance (#1267).
2026-09-14 17:50:10 +04:00
mohammad junayd
a079b6c418 test(install): cover checksum and provenance verification
Pin fail-closed installer paths for missing manifests, verifier
fallback, and the skip-verify escape hatch (#1267).
2026-09-14 17:47:03 +04:00
mohammad junayd
0636584eef fix(install): leave existing Strix untouched on verify failure
Stage into *.new and only rename after checks pass; abort cleans
temps and keeps the current binary (#1267).
2026-09-14 17:38:33 +04:00
mohammad junayd
14b0aee28b fix(install): verify SHA256SUMS before extract
Fail closed when the published checksum is missing or does not
match the downloaded archive (#1267).
2026-09-14 17:35:05 +04:00
mohammad junayd
d61e0a2a63 fix(install): verify Sigstore provenance before extract
Fail closed unless gh or cosign can check the published bundle
against this release workflow (#1267).
2026-09-14 17:31:52 +04:00
mohammad junayd
8d09cff912 ci(release): publish Sigstore attestation bundles
Ship per-target and SHA256SUMS .intoto.jsonl files with the release
so provenance is downloadable for manual and offline checks (#1267).
2026-09-14 17:22:07 +04:00
mohammad junayd
3b870c8fbb ci(release): attest binaries, wheels, and SHA256SUMS
Sign each published artifact with Sigstore keyless provenance from
this workflow so the installer can verify origin (#1267).
2026-09-14 17:17:41 +04:00
mohammad junayd
b25c55eb9b ci(release): publish SHA256SUMS for every release asset
Let the installer verify downloads against a same-origin checksum
manifest before extract (#1267).
2026-09-14 17:15:24 +04:00
Ahmed Allam
84f4108195 fix(web_search): send only the agent's query to Exa search
Exa /search is a neural search endpoint, not a chat model, so prepending
the Perplexity system prompt made Exa match the prompt's own vocabulary
(Kali, OWASP, apt, NIST) instead of the query. The system prompt stays
on the Perplexity path where it is a chat system message; the Exa
summary instruction is unchanged.
2026-09-13 19:40:50 +03:00
Elisabeth Rulke
0c4364a6a7 docs: add Vercel AI Gateway provider guide
Add Vercel AI Gateway as an LLM provider option, mirroring the existing
provider pages. New guide, an overview card, and a nav entry after
OpenRouter. Docs only.
2026-09-12 19:37:41 +03:00
Ahmed Allam
95e085eb6c feat(prompts): require http_exchange_ids for proxy-validated findings
Agents mostly left http_exchange_ids empty because the only nudge was the
parameter docstring. The REPORTING rules now state that a finding validated
through the proxy is not fully filed until the ids of its proving exchanges
(exploit plus baseline) are attached, copied from list_requests/view_request,
omitted only for findings with no captured HTTP at all, and attached after
the fact with update_vulnerability_report when needed. The Caido section
tells agents to note the ids as they test.
2026-09-10 03:50:17 +03:00
alex s
22959a7ba6
feat(reporting): link HTTP exchange evidence (#1281)
Co-authored-by: Ahmed Allam <ahmed39652003@gmail.com>
2026-09-09 07:50:23 -07:00
devin-ai-integration[bot]
52b1923347
fix(models): frontier model check matches the model name only, never the provider route (#1280)
Co-authored-by: Ahmed Allam <ahmed39652003@gmail.com>
2026-09-06 11:09:24 -07:00
Ahmed Allam
ff5c8cc8e4 chore: release v1.6.2 2026-09-05 04:22:29 +03:00
Ahmed Allam
afce7d95e8 fix(telemetry): classify setup-mode TUI preflight and preparation failures 2026-09-05 04:08:09 +03:00
Ahmed Allam
2e1db25786 feat(telemetry): classify error beacons by phase and exception class
error events now carry phase (startup/preflight/sandbox_init/agent_setup/
agent_loop) and the exception class name (plus its cause), never the message
or trace. Startup and preflight failures that exit(1) before the scan starts
are beaconed with a stable error_type instead of vanishing. scan_ended
distinguishes budget_exceeded, rate_limited, and headless agent_stopped
from user_exit.
2026-09-05 04:08:09 +03:00
devin-ai-integration[bot]
f4b0416b71
docs: update README and CLI links (#1272)
Co-authored-by: Ahmed Allam <ahmed39652003@gmail.com>
2026-09-04 17:56:08 -07:00
Ahmed Allam
c2c84f1131 chore(telemetry): drop unnecessary lock around loaded-skills set 2026-09-05 03:26:12 +03:00
Ahmed Allam
bb7e82b6ea chore(telemetry): drop per-load skill_loaded beacons, send anonymous events
Report the distinct set of skills used once on scan_ended instead of one
skill_loaded event per skill per prompt render. Mark PostHog events with
$process_person_profile=false (distinct_id is a throwaway session id, so
person profiles were never useful) and tag them with $lib/$lib_version.
2026-09-05 03:26:12 +03:00
Ahmed Allam
9cc9de8cdc fix(warmup): drop docker from WARMUP_MODULES
The Docker checks import the Docker SDK on the main thread before the
warm-up join, so warming it saves nothing and leaves one module shared
between the two threads during the startup window.
2026-09-05 02:45:34 +03:00
Ahmed Allam
a3bf864e1e test(warmup): assert wait_for_import_warmup blocks until the thread finishes 2026-09-05 02:45:34 +03:00
Ahmed Allam
e60fd83931 refactor(warmup): drop the orphan purge and join the warm-up once before the engine imports 2026-09-05 02:45:34 +03:00
Ahmed Allam
7f46dd17d3 fix(cli): wait for the import warm-up before importing the agents SDK on the main thread
The warm-up thread imports strix.core.runner while warm_up_llm and
preflight_model_connection import agents.models.interface. Both walk the
agents SDK graph from different entry points, CPython fails one side to
break the import-lock cycle, and the orphan purge then removes agents.*
from sys.modules while the main thread is still importing it, crashing
strix -n with KeyError: 'agents.models'.
2026-09-05 02:45:34 +03:00
devin-ai-integration[bot]
afa7c4a77f
feat(web_search): add Exa as a web search provider alongside Perplexity (#1270) 2026-09-04 10:34:28 -07:00
oyasumi
f6d9790ecb fix(viewer): show stopped run status 2026-09-04 01:10:10 +03:00
alex s
5d015df6b1
fix(cloud): print top-up instructions on 402 and guide oversize or archive --source (#1242)
- Every payment-required error now ends with a "Next step" line: the
  platform hint when one is sent, else the topup command and the billing
  URL for the configured platform. JSON output gets the same text as
  next_step. The platform hint is no longer repeated inside the error.
- An archive file passed to --source is rejected with guidance to pass
  the directory instead, which packs and excludes deps/build output.
- An oversize archive names its largest files and points to --exclude
  and --dry-run --show-files.
- uploads request help points to scans start --source for local code.
2026-09-02 15:26:37 -04:00
Ahmed Allam
1edafd3e80 fix(agents): stop parents waiting on finished non-interactive children
A non-interactive agent's loop returns after its terminal state, yet
send_message_to_agent kept reporting messages to it as delivered and the
parent then waited out wait_for_agents on a reply that could never come.

- AgentRuntime.resumable records whether the loop parks for wake-ups after a
  terminal state; run_agent_loop / _start_child_runner set it from interactive.
- AgentCoordinator.send returns False (nothing queued) for a terminal agent
  that is not resumable; send_message_to_agent surfaces target_status and
  delivery_status=not_delivered with a pointer to list_reports / get_report.
- wait_for_agents returns wait_outcome=no_active_agents at once when no other
  agent is running or waiting in a non-interactive run.
- agent_finish reads the reports the finishing agent filed from the report
  state and puts their ids in the completion report, the parent message
  (filed_report_ids) and its own return payload, so parents no longer have to
  infer what was filed from prose.
2026-09-02 22:11:12 +03:00
Ahmed Allam
f1e24fe3f2 chore: release v1.6.1 2026-09-02 19:05:46 +03:00
Ahmed Allam
e644f4a02c docs(readme): shorten the coding-agent skills paragraph 2026-09-02 18:46:33 +03:00
Ahmed Allam
1ebe1007e8 docs: keep the existing recommended model rows in the README 2026-09-02 18:35:45 +03:00
Ahmed Allam
53d2e5cfeb docs: note viewer steering, history, and report prerequisites 2026-09-02 18:35:45 +03:00
Ahmed Allam
7708f717d5 docs: trim crammed README sections and add cloud CLI and viewer docs pages 2026-09-02 18:35:45 +03:00
devin-ai-integration[bot]
a8642de76c
docs(readme): trim the strix cloud section to the essentials (#1237) 2026-09-02 07:19:56 -07:00
Ahmed Allam
75b89018d3 docs: use openrouter/z-ai/glm-5.3 as the default model in setup examples 2026-09-02 16:52:53 +03:00
Ahmed Allam
129f938094 fix(models): keep aggregator routes out of RECOMMENDED_MODEL_NAMES, family matching already accepts them 2026-09-02 16:52:53 +03:00
Ahmed Allam
b438632e12 fix(models): keep list additions-only, restore gpt-5.4 examples, make openrouter/z-ai/glm-5.3 the top pick 2026-09-02 16:52:53 +03:00
Ahmed Allam
0ab7244807 feat(models): refresh the recommended model list and docs examples
Add Claude Fable 5.1, Gemini 3.7 Flash, and Z.ai GLM-5.3 / GLM-5.3-Flash
to RECOMMENDED_MODEL_NAMES, add a Z.ai GLM frontier family so GLM-5.x is
accepted through OpenRouter and Novita routes, and drop the superseded
GPT-5.4, GPT-5.3-codex, Opus 4.8, Sonnet 4.6, Gemini 3.6 Flash, and
Qwen3.7 entries. Update the README, docs provider pages, quickstart, and
CLI hint strings to the same current models, including DeepSeek V4,
Kimi K3, and GLM-5.3.
2026-09-02 16:52:53 +03:00
Ahmed Allam
c514f712f4 fix(config): persist only the alias the runtime settings read
pydantic-settings takes the first alias present in the environment, even
when it is empty. persist_current() must save that same alias, so an empty
LLM_API_KEY does not let a non-empty OPENAI_API_KEY sibling land in the
file and restore a credential the run did not use.
2026-09-02 16:10:52 +03:00
Ahmed Allam
3e88e498b9 fix(config): drop the stored LLM connection when a linked env var changes
A new STRIX_LLM, LLM_API_KEY, or LLM_API_BASE exported in the shell must not
be combined with the key, base, or model still stored in cli-config.json.
Restore the pre-refactor rule: when any linked LLM connection var differs
from the stored value, discard the whole stored connection before loading
and before persisting. Unrelated stored settings are kept.
2026-09-02 16:10:52 +03:00
Ahmed Allam
ce0db30252 fix(config): merge env into cli-config.json instead of overwriting it
persist_current rewrote the config file with only the env vars set in the
shell, so a run whose STRIX_LLM or LLM_API_KEY came from the file erased
them and the next launch failed with MISSING REQUIRED ENVIRONMENT
VARIABLES. Start from the stored env block, let a set env var override or
replace the aliases of its field, and let an empty env var clear it.
2026-09-02 16:10:52 +03:00
Ahmed Allam
941c960650 fix(ci): make the pre-commit mypy hook and the test suite pass on a fresh checkout 2026-09-02 15:15:51 +03:00
Ahmed Allam
46b4e6cb64 fix(tui): run environment and model checks on the no-target start screen
The interactive start screen skipped validate_environment() entirely, and
a bare prompt sent verify=false so the model preflight never ran. Both
kinds of setup launch now verify the model before leaving the start
screen, environment validation runs for every mode, and quitting setup
without a scan still shows the update notice.
2026-09-02 15:03:19 +03:00
yoni-at-strix
b5c3807fef
fix(mcp): keep the session on tool-call protocol errors and report quarantine truthfully (#1228) 2026-09-01 22:43:54 -04:00
alex s
42baa7c09e
skills: point to the strix cloud CLI in every skill (#1227) 2026-09-01 18:12:29 -04:00
Ahmed Allam
8fdf6a5c09 chore: release v1.6.0 2026-09-01 23:29:06 +03:00
alex s
46cf2f52f3
report: add update_vulnerability_report so an agent can revise a filed finding (#1210)
Co-authored-by: Ahmed Allam <ahmed39652003@gmail.com>
2026-09-01 13:07:17 -07:00