<h2><code>/goal</code> — the agent works until it's done</h2><p>Here's a session that happens ten times a day:</p><pre><code>You:     Fix the type errors in src/auth/
Agent:   [edits three files, runs tsc, finds two new errors]
Agent:   stops. Waits for you.
You:     keep going
Agent:   [edits two more files, runs tsc, finds one more error]
Agent:   stops. Waits for you.
You:     keep going
Agent:   [edits one file, runs tsc, clean]
Agent:   "All type errors resolved."
</code></pre><p>Three prompts that said nothing except "don't stop." You were the bottleneck. The agent knew what to do. It just needed permission to keep doing it.</p><p><code>/goal</code> removes you from the loop:</p><pre><code>/goal npm run check
Fix the type errors in src/auth/
</code></pre><p>After each agent turn, Elyra runs <code>npm run check</code>. If it exits with code 0, the goal is met and the agent stops. If it fails, the output goes back to the agent as a new prompt — "this is what's still broken, keep going" — and the agent continues automatically.</p><p>No manual "keep going." No checking back every thirty seconds. You set the bar and the agent works until it clears it.</p><h3>What makes a good goal</h3><p>A goal is any shell command with a binary pass/fail:</p><pre><code class="language-bash">/goal npm run check
/goal npx tsc --noEmit
/goal npm test -- --run test/auth.test.ts
/goal grep -rL "TODO" src/
</code></pre><p>The command runs after every agent turn with a 30-second timeout. If it passes (exit 0), the goal is met. If it fails, the agent sees the output and tries again.</p><p>Good goals are specific and fast. <code>npm test</code> works but might be slow. <code>npm test -- --run test/auth.test.ts</code> is better — it checks exactly what matters without running the full suite on every turn.</p><h3>What happens in practice</h3><pre><code>/goal npx tsc --noEmit
Refactor the auth module to use the new session types

Goal set: npx tsc --noEmit
The agent will keep working until this command exits with code 0.

[Agent edits src/auth/service.ts, src/auth/types.ts]
Goal check failed (exit 2), continuing...

[Agent reads the tsc errors, fixes src/auth/middleware.ts]
Goal check failed (exit 2), continuing...

[Agent fixes the last import in src/auth/index.ts]
Goal met: npx tsc --noEmit
</code></pre><p>Three iterations, zero intervention. The agent saw the compiler errors after each turn and knew exactly what was left. You could have been making coffee the entire time.</p><h3>Clearing a goal</h3><p>Type <code>/goal</code> with no arguments to clear the active goal. The agent goes back to normal interactive mode — one turn at a time, waiting for your input.</p><h2><code>/update</code> — stay in the flow</h2><p>The other friction point we fixed is smaller but annoying in a different way.</p><p>Before this release, updating Elyra meant:</p><ol><li><p>See "Update available: 0.7.10 → 0.7.11" on startup</p></li><li><p>Finish your current work</p></li><li><p>Exit Elyra</p></li><li><p>Run <code>elyra update</code> in the terminal</p></li><li><p>Start Elyra again</p></li><li><p>Resume your session</p></li></ol><p>Now:</p><pre><code>/update
Updating 0.7.10 → 0.7.11...
Updated to 0.7.11. Restarting...
</code></pre><p>Elyra downloads the update, restarts itself, and you're back in a fresh session. The whole thing takes a few seconds. If the update fails — wrong permissions, network issue, whatever — you get a clear error with the manual command to run.</p><p>The startup notification now says "Type <code>/update</code> to update and restart" instead of the old "Run <code>elyra update</code>" message. One less context switch.</p><h2>Get it</h2><pre><code class="language-bash">elyra update
</code></pre><p>Or, if you're already running v0.7.11 or later:</p><pre><code>/update
</code></pre><hr><p><em>Elyra v0.7.11 — </em><a target="_blank" rel="noopener noreferrer nofollow" href="https://elyracode.com/changelog"><em>changelog</em></a></p>