Reads any key set by agent variable set or auto-injected. Resolved before the field is parsed — no escaping needed inside backticks.
Both attributes required. key is the variable name. hostname is the host whose store holds it (any container or VM declared in config.yml).
Resolves the per-play sandbox identifier. Looks like a shell variable but is interpreted by Instruqt's renderer in specific config fields, not by bash.
The only built-in shell-style variable. Other shell vars ($INSTRUQT_USER_NAME etc.) are not resolved this way — they're available to lifecycle scripts but not to config-field interpolation.
| Field | [[ Instruqt-Var ]] | ${_SANDBOX_ID} | Notes |
|---|---|---|---|
| assignment.md body | ✓ | — | Including inside fenced code blocks. |
| assignment.md frontmatter | ✓ | — | teaser, description, button labels. |
| tab cmd: / path: / workdir: | ✓ | — | Resolved at tab open. |
| tab url: (website type) | ✓ | ✓ | Both syntaxes accepted. |
| virtualbrowsers url: | — | ✓ | Shell-style only. |
| notes: contents (text/video/image) | ✓ | — | Plus inline <style> for per-slide CSS. |
| image alt-text, button labels | ✓ | — | Within body. |
| Markdown table cells | ✓ | — | Useful for credentials tables. |
| Lifecycle scripts (bash) | — | ✓ | Use shell-style here; $_SANDBOX_ID is just a regular env var. [[ Instruqt-Var ]] would not be resolved. |
[[ Instruqt-Var ]] is resolved before the field's content is parsed by Instruqt's renderer. That means it works inside fenced code blocks without escaping. The block looks literal in the source but the value substitutes at render time.INSTRUQT_ variables (including INSTRUQT_AWS_ACCOUNT_, INSTRUQT_AZURE_SUBSCRIPTION_, INSTRUQT_GCP_PROJECT_) are in the agent store automatically. Reference them with [[ Instruqt-Var ]] with no setup-time bridge._SANDBOX_ID and _SANDBOX_DNS are auto-injected as shell env vars but not in the agent store. Bridge with agent variable set SANDBOX_ID "$_SANDBOX_ID" if the body needs them.${_SANDBOX_ID} in body text renders as literal text — the body uses [[ Instruqt-Var ]]. Bridge first, then interpolate.[[ Instruqt-Var ]]. Variables are stored per-host. Forgetting the attribute means the platform can't resolve.