Skip to content
Agentmart
Submit a tool

sage-callback-bootstrap

Repo-local post-Mythic-reset Sage chat and foothold bootstrap workflow.

Skill by MythicAgents

IndexedGPL-3.0★ 29
Write a review

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/mythicagents-sage-callback-bootstrap

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

Repo-local post-Mythic-reset Sage chat and foothold bootstrap workflow. Use to verify the Sage chat container, create or restore Apollo/Merlin footholds, check readiness, or rediscover the live CASTELBLACK callback.

Use cases: productivity

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 and code. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/sage-callback-bootstrap

What's inside

Skill name
sage-callback-bootstrap
Description
Repo-local post-Mythic-reset Sage chat and foothold bootstrap workflow. Use to verify the Sage chat container, create or restore Apollo/Merlin footholds, check readiness, or rediscover the live CASTELBLACK callback.
License
GPL-3.0
Instructions
121 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (5)

  • .env.example
  • SKILL.md
  • openai.yaml · agents/
  • bootstrap_payloads.py · scripts/
  • test_bootstrap_payloads.py · tests/

SKILL.md (first lines)

# Sage Callback Bootstrap

Use after `$sage-goad-reset` archives runtime databases, resets Mythic, and restarts Sage. Sage is a native Mythic
v4 chat container; do not create or wait for a Sage payload callback.

## Credentials

The helper resolves `MYTHIC_ADMIN_PASSWORD` first, then `MYTHIC_ENV_PATH`, then
`MYTHIC_ENV_PATH`; there is no checkout-name default. See `.env.example`.

## Workflow

Inspect Mythic:

```bash
.venv/bin/python skills/sage-callback-bootstrap/scripts/bootstrap_payloads.py inspect
```

Verify the Sage chat container and create a fresh Apollo payload:

```bash
.venv/bin/python skills/sage-callback-bootstrap/scripts/bootstrap_payloads.py bootstrap-reset
```

`bootstrap-reset` must report a running `sage_chat_container`, a wildcard-scoped API token owned by the current
operation's unique active bot, and an empty locked prepared channel named
`Sage GOAD Ready`, and `sage_payload_created: false`.

The standalone command keeps that prepare-chat behavior for compatibility. When the operator will create the
operation and demo chat manually, use:

```bash
.venv/bin/python skills/sage-callback-bootstrap/scripts/bootstrap_payloads.py bootstrap-reset --no-prepare-chat
```

Pair it with `readiness --no-require-prepared-channel`. This relaxes only the prepared-channel section; Sage
container, token, range, clock, BloodHound, and unique foothold requirements remain enforced.

After Apollo is launched as `NORTH\samwell.tarly` on CASTELBLACK, run:

```bash
.venv/bin/python skills/sage-callback-bootstrap/scripts/bootstrap_payloads.py post-callback-preflight
.venv/bin/python skills/sage-callback-bootstrap/scripts/bootstrap_payloads.py readiness --runtime-dbs-archived
```

Readiness delegates to the shared `sage-goad-reset` readiness contract. It is true only when the sanitized
startup identity, runtime DB archival, exact six-VM/IP state, clock check, BloodHound API/domains, BloodHound
MCP checkout and exact required tool set, Mythic chat/token, unique live foothold, and prepared channel are all
ready. `selected_sage_cb` is intentionally null.

`post-callback-preflight` is now strictly task-free. It waits for the selected live Apollo callback through
Mythic control-plane observation, synchronizes range clocks out of band, and returns explicit zero-task metadata.
It does not issue callback tasks, purge Kerberos tickets, or claim target-probed domain/identity output.
The `sage-goad-reset` orchestrator additionally proves this with observed Mythic task-count deltas before
admitting reset completion.

## Canonical Apollo Bootstrap Path

Do not re-derive Apollo bootstrap manually when these helpers cover the case.

- Fresh clean-baseline foothold with a newly built downloadable payload: `bootstrap-reset` → payload deploy skill `deploy` with the interactive Apollo
  launch path → `post-callback-preflight` → `readiness --runtime-dbs-archived`.
- Pre-staged interactive foothold with retained callback metadata: `bootstrap-reset --use-retained-callback ...` → payload deploy skill
  `launch-existing` or `launch_apollo_foothold.sh` with a settle window and unique-callback gate →
  `post-callback-preflight` → `readiness --runtime-dbs-archived`.
- Batch-logon canary foothold: use `sage-foothold-launch` only when the selected Mythic payload is genuinely
  downloadable and the operation explicitly accepts a batch-logon token.

Imported retained callback metadata can recreate a payload row with an empty server-side file path. That row binds
the staged executable's identity but cannot supply bytes to `deploy`; do not call `mythic.download_payload` for it.
It does not prove that an independently selected snapshot contains the same payload. For the qualified Trust Walker
fixture, validate the atomic snapshot/config/payload/task/executable identity in
`skills/sage-mythic-payload-deploy/SKILL.md` before launch.
Headless execution alone never changes the selected bootstrap mode. Satisfy the interactive wrapper's display
prerequisite or stop before allocation. See the authoritative decision table in
`skills/sage-mythic-payload-deploy/SKILL.md`.

For retained or purpose-range launches, do not call the foothold ready until the callback lane is unique after the
settle window. Always rediscover the active callback ID after launch; imported callback rows are historical metadata,
not tasking targets.

## Retained Foothold

Export before reset:

```bash
.venv/bin/python skills/sage-callback-bootstrap/scripts/bootstrap_payloads.py export-callback-config --callback <foothold-display-id> --output skills/sage-callback-bootstrap/merlin_callback_config.json
```

Import after reset:

```bash
.venv/bin/python skills/sage-callback-bootstrap/scripts/bootstrap_payloads.py bootstrap-reset --use-retained-callback --retained-callback-config skills/sage-callback-bootstrap/merlin_callback_config.json
```

Imported callback rows are forced inactive so they remain historical metadata and cannot be selected for
tasking. Launching the retained payload creates the active callback row used by Sage.

Then launch the retained payload and run:

```bash
.venv/bin/python skills/sage-callback-bootstrap/scripts/bootstrap_payloads.py readiness --runtime-dbs-archived --foothold-payload-type merlin
```

The baked Apollo import remains available through `--use-baked-apollo` for legacy snapshots only.

## Post-rebuild payloads and GraphQL notes

- `create-apollo` builds through the **currently running** apollo container. After a service rebuild
  (e.g., a patched agent branch installed per `skills/sage-mythic-payload-deploy/SKILL.md`), every payload it
  creates carries the patched agent version; confirm via Mythic GraphQL `payloadtype { name semver }`.
  A new build parameters instance list (`buildparameterinstances { value buildparameter { name } }`) also
  carries the build's C2 settings. Callback C2 parameters to mirror on a fresh payload can be read
  (with keys redacted) from `export-callback-config`.
- Mythic GraphQL schema differences worth knowing (v3.4.x): `filemeta` has no `sha256` field;
  `payload` has no `build_parameters`/`buildparameter` relation — use `buildparameterinstances`;
  `payloadtype` exposes the agent version as `semver` (not `agent_version`); task artifacts live in
  `task.taskartifacts { base_artifact artifact_text }` (no `artifact_details`); `response_text` is
  base64-encoded. Introspect `__type(name: "...")` before guessing fields.

From MythicAgents/sage, GPL-3.0.

More from MythicAgents/sage

Signals

Stars
29
Forks
5
Open issues
1
Last commit (this folder)
Oct 15, 2026 (13 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
GPL-3.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from MythicAgents

Cite this page

sage-callback-bootstrap skill. Agent Mart. https://agentmart.dev/skills/mythicagents-sage-callback-bootstrap (last updated 2026-10-24)