Eigent Release Notes v1.0.4: Skills & Connectors Dashboards, Durable Multi-Turn Runs
Browse and configure your resources from one shell, and let long agent Tasks finish predictably

Eigent v1.0.4 is a release about making the workspace easier to read. Skills and Connectors were previously stacked settings cards; they are now library-style dashboards with real collection views, detail pages, and a shared page shell that Home, Skills, and Connectors all use.
Underneath that surface, this release closes a focused set of gaps that showed up once Tasks started running longer: instructions dropped between chained model turns, checkpoints failing when a Task cloned a repository inside a Space, connectors showing a state that did not match the runtime that would actually execute them, and the app not shutting down cleanly when its last window closed.
🧩 Skills and Connectors as Management Dashboards
Managing a Skill should not mean scrolling a settings page until you find the right card.
Thanks to @Douglasymlai for rebuilding Skills and Connectors as collection and detail surfaces in PR #1896, and to @4pmtong for reviewing it.
Skills is now a library dashboard. Each Skill opens into a dedicated detail view showing where it came from, what access it holds, whether it is enabled, and which files it contains. Connectors follows the same model: a collection overview, an add and browse flow, and a profile masthead with the icon, name, source, and install or save action.
What's new:
- Skills library dashboard — browse your Skills as a collection rather than a stack of settings cards
- Skill detail views — source and access tags, enablement, and a file browser in one place
- Connector collection and discovery — a clearer path from browsing available connectors to configuring one
- Connector detail masthead — icon, name, source, and install or save action presented as a profile
- Detail sidebars — supporting context stays beside the resource you are inspecting
The practical difference is inspection. You can answer "where did this Skill come from, what can it reach, and what is inside it" without leaving the page you started on.
🔗 PR: https://github.com/eigent-ai/eigent/pull/1896
🏠 One Page Shell Across Home, Skills, and Connectors
Consistency is a feature when you navigate the same app every day.
v1.0.4 unifies Home and Settings onto a single page shell built from shared primitives — a collection toolbar, a breadcrumb, a content rail, and a sidebar back header. Home hub lists, empty states, and Space detail tabs now align with the same collection layout used by Skills and Connectors.
What's improved:
- Shared layouts — the same header, breadcrumb, and reading rail across Home, Skills, and Connectors
- Consistent collection lists — hub lists and Space detail tabs follow one layout model
- Clearer empty states — an unconfigured surface explains itself instead of showing a blank panel
- Predictable navigation — breadcrumbs and back headers behave the same wherever you are
Once the shell is shared, moving between Home, a Space, a Skill, and a Connector stops requiring you to relearn the page each time.
🔗 PR: https://github.com/eigent-ai/eigent/pull/1896
🔁 Multi-Turn Agent Work That Keeps Its Instructions
A long Task is a chain of turns, and every turn needs the same trusted instructions.
Thanks to @4pmtong for fixing Prompt Guard failures on chained Responses API requests in PR #1883.
The first request in a chain succeeded, which is why the regression stayed hidden. Subsequent requests reused previous_response_id, but top-level instructions were not carried forward automatically — so the trusted agent prompt quietly disappeared partway through a run.
What's fixed:
- Instructions on every request — the trusted agent prompt is sent through Responses API
instructionsfor each turn, not only the first - No duplicated prompt content — system and developer items are removed from the input once promoted to
instructions, avoiding duplicate tokens and duplicate billing - Prompt Guard stays intact — the existing rejection message for untrusted prompts is preserved
This is the kind of bug that only appears at length. Short Tasks looked fine; the failure lived in turn three.
🔗 PR: https://github.com/eigent-ai/eigent/pull/1883
🧰 Tools with Dynamic Parameter Schemas
Not every tool has a fixed shape, and strict schema validation should not reject the ones that do not.
Thanks to @fengju0213 for bumping camel-ai[eigent] to 0.2.91a7 and refreshing the backend lockfile in PR #1897.
The new CAMEL release includes the strict-schema fallback needed by tool parameters that contain open mappings. With it, PlanningWorktreeToolkit.planning_exit_plan_mode keeps its schema-valued additionalProperties and is emitted with strict: false, avoiding a provider-side 400 response while preserving the dynamic dictionary fields the tool actually needs.
Tools that carry open-ended parameters now work with providers that enforce strict schemas, instead of failing at call time.
🔗 PR: https://github.com/eigent-ai/eigent/pull/1897
🌿 Nested Repositories Inside Git-Backed Spaces
v1.0.3 gave Spaces Git-backed version history. v1.0.4 makes that history survive a Task that clones a repository inside one.
Thanks to @4pmtong for supporting nested repositories in workspace checkpoints in PR #1902.
Git reports an untracked nested repository as a single directory entry such as ?? child-repository/. The checkpoint pipeline normalized that path to child-repository, which failed path validation after the clone had already completed — the tool outcome was marked unknown and the Run failed.
What's fixed:
- Nested repositories are independent boundaries — a verified untracked nested Git root is excluded from parent checkpoint and status ownership
- No implicit gitlink or ignore-file edits — the parent repository is not silently restructured to accommodate the child
- Parent state stays unchanged — HEAD, state token, and tracked paths are untouched when the checkpoint completes
- Child content stays intact — the nested repository and its commits are preserved
- Worktree safety is preserved — isolated worktrees are not cleaned while they contain an unmerged nested repository
Cloning a repository into a Space is ordinary agent work. After this release, it no longer ends the Run.
🔗 PR: https://github.com/eigent-ai/eigent/pull/1902
🔌 Connector States That Match the Runtime
A connector that reports the wrong state is worse than one that reports nothing.
Two fixes from @4pmtong address opposite sides of the same problem.
Web search stayed hidden when it needed configuration. For users on a custom default model, Web search counted as disconnected until Querit was enabled or Google Search credentials were configured — and the Connectors overview filtered out every disconnected built-in connector. Since that row is also the entry point to its settings panel, affected users had no way to configure it at all. Web search now stays visible and shows its real state as Not connected, while managed models keep their existing Connected state. Filtering is unchanged for every other disconnected built-in connector.
Slack reported connected when it was not. In hosted mode, the settings UI treated the presence of a local Slack config group as a valid connection, but hosted Tasks execute Slack actions through Connector Gateway — where the same user may have no Slack connection at all. The result was a connected badge followed by a connection-not-found error at runtime. Built-in connectors whose new-user flow is owned by Connector Gateway now follow a centralized policy: with Gateway enabled, Built-in Slack is hidden from the Connectors page, the chat connector picker, and new Worker tool selection. With Gateway disabled, Built-in Slack stays available for local-only runtimes.
Existing Slack toolkit execution, stored configuration, saved Workers, and Slack trigger credentials continue to work in both cases.
🔗 PR: https://github.com/eigent-ai/eigent/pull/1890
🔗 PR: https://github.com/eigent-ai/eigent/pull/1892
🖥️ Clean Shutdown When the Last Window Closes
Closing the app should end the app.
Thanks to @4pmtong for fixing the shutdown lifecycle in PR #1891. Closing the only window now exits Eigent cleanly on every platform, and the local backend is shut down with it.
What's fixed:
- One quit path — the native window close, the window-close IPC, and the Close Window menu command all route through the same guarded
quit-appflow - macOS quits on last window —
window-all-closednow quits on macOS as well as Windows and Linux, sobefore-quitcleans up the local backend - Safe teardown — the bound
webContentsreference is retained instead of read from an already-destroyedBrowserWindow - Destroyed objects are skipped — listener removal is bypassed for destroyed windows and web contents, and coordinator references are cleared before teardown
Developers get the same benefit: npm run dev now terminates instead of leaving a backend running behind a closed window.
🔗 PR: https://github.com/eigent-ai/eigent/pull/1891
🧹 Generated Web Tasks That Finish Reliably
Some generated-web Tasks did not terminate. The cause turned out to be two things at once.
Thanks to @4pmtong for the release-safe fix in PR #1907.
Eigent no longer needs to upload generated content to the legacy remote deployment service, so Web Deploy Toolkit is removed from the Workforce Developer Agent and Single Agent assembly, and deployment claims are removed from the Developer Agent prompt, the Workforce coordinator description, and the workflow capability lists. Legacy toolkit configuration that still requests web_deploy.enabled=true is ignored. web_deploy_toolkit.py and its historical rendering support remain in the codebase for possible future use.
The second cause was timing. The terminal background-cleanup checkpoint budget moves from 5 seconds to 30 seconds, giving a stopped preview server room to release its write lease and finish the workspace Git checkpoint before the Run finalizes.
🔗 PR: https://github.com/eigent-ai/eigent/pull/1907
⚙️ Faster Guardrails for Contributors
Slow CI is a tax on everyone who opens a pull request.
The frontend guardrail job routinely took 20 to 30 minutes because it ran the complete Vitest suite for both the base and the pull request commit with caching disabled, then retried failures against a baseline that already contained known failures and 29-second timeouts.
Thanks to @4pmtong for replacing that full-suite comparison with a focused runner in PR #1898.
What's improved:
- Changed-test runner — only the frontend test files added or updated by the change are executed
- Fast checks first — type, Electron, design-system, and formatting checks run before Vitest
- Superseded runs are cancelled — a new push cancels the previous Test workflow run for the same pull request or branch
- Shorter timeout — the frontend guardrail budget drops from 30 minutes to 15
In a replay against the change merged by PR #1891, the changed-test runner executed 4 test files and 134 tests in 1.07 seconds.
🔗 PR: https://github.com/eigent-ai/eigent/pull/1898
🔁 Compatibility for Existing Work
Existing Spaces, Sessions, Tasks, Skill settings, saved Workers, and connector configurations remain available after upgrading to v1.0.4. No additional configuration is required for the default experience.
Local-only integrations are explicitly preserved. Built-in Slack, saved Workers, and Slack triggers continue to work when Connector Gateway is disabled, and stored Slack configuration is untouched in both modes.
❤️ A Workspace That Explains Itself
Eigent v1.0.4 delivers:
- Skills as a library dashboard with source, access, enablement, and file detail views
- Connectors as a collection, discovery, and profile detail flow
- A shared page shell with consistent breadcrumbs, sidebars, content rails, and empty states across Home, Skills, and Connectors
- Trusted agent instructions preserved across chained Responses API turns, without duplicated prompt content
- Strict-schema compatibility for tools with dynamic parameter schemas
- Nested Git repositories treated as independent boundaries during workspace checkpoints
- Web search that stays discoverable while it still needs configuration
- Slack presented through the connector path that will actually execute it
- Clean application shutdown and local backend teardown when the final window closes
- More reliable generated-web Task completion and background-process cleanup
- A frontend CI guardrail that runs in minutes instead of half an hour
The theme of this release is legibility. A dashboard tells you what a Skill can reach. A connector state tells you which runtime will run it. A checkpoint tells you which repository owns a change. And a Task that runs for a long time keeps the instructions it started with.
Work you can inspect is work you can trust.
🔗 Release: https://github.com/eigent-ai/eigent/releases/tag/v1.0.4
🔗 Full changelog: https://github.com/eigent-ai/eigent/compare/v1.0.3...v1.0.4
Let's keep building.
Recent Posts

Meta Muse: The Personal AI Agent That Books, Buys, and Negotiates
Meta Muse is a personal AI agent that books travel, buys things, and negotiates bills from a chat. Here's what it does, pricing, security, and how it compares.

Claude Fable 5.1 and Mythos 5.1: What's New, Explained
Claude Fable 5.1 and Mythos 5.1 explained: the same model in two safeguard tiers, with new benchmarks, roughly 25 to 45 percent lower cost, and access details.

Gemini 3.8 Flash: What's New for Coding and AI Agents
Gemini 3.8 Flash brings big coding and agentic-reasoning gains at the same low price, plus a new 3.8 Flash Cyber variant. Benchmarks, pricing, and how to use it.