To turn Cascade off for good means migrating everything it held: memories, workflows, rules, hooks, MCP and auto-execution settings. The volume is daunting, and two equally bad impulses arise - either give up and keep Cascade forever as insurance, or flip a switch and hope the needed things somehow move on their own. Both postpone the work rather than doing it.
The naive model of migration is copying. It seems enough to move memories and workflows to a new place, and Devin Local will pick up where things left off, just under a new name. The expectation again rests on a similarity of vocabulary: there were rules and memory, here there are rules and memory, so the move is mechanical.
It breaks on the fact that explains the wizard's very existence: memories and workflows are not supported as such in Devin Local. They cannot be copied - they must be translated into another form, above all into skills. That is exactly why the product has a Cascade Migration Wizard: migration here is a translation from one model into another, not a move of files between folders.
The wizard is launched by the command Devin: Open Cascade Migration Wizard and, in one guided flow, brings over your workflows and memories, helping turn critical memories into skills. This is a starting point, not a finish: per the documentation, after the migration you should open the Customizations section and review each source - to make sure exactly what is needed moved over, and in the right form. It is worth remembering that the wizard helps with the move but does not relieve you of responsibility for the contents: what exactly became a skill, and whether anything extra leaked into it, is visible only on a manual review of Customizations.
What helps next is not a sequence of clicks but a transition matrix: which Cascade concept maps to which target in Devin Local and what action is required. The table below is exactly such a map. It must be read row by row and as a list of decisions, not of auto-replacements: each row calls for a rethink, not a transfer.
Let us walk the rows. A memory moves into a rule or a skill - but with filtering: facts are separated from secrets, and the latter have no place in a permanent context. A workflow becomes a skill to which tools, permissions and a way to verify the result are added explicitly. A rule goes into AGENTS.md or .devin/rules with its always-on part trimmed, so as not to bloat the permanent context. A hook is carried over with its events and outcome re-checked. MCP - with re-authentication and narrowed grants. Auto-exec is translated into permissions and a sandbox, carrying over the intent, not the syntax. None of these rows reduces to renaming a folder: each holds a decision a human makes deliberately - what to keep, what to discard, what to rewrite for the new permission model.
| Cascade | Devin Local | Action |
|---|---|---|
| Memory | Rule or skill | Filter out facts and secrets |
| Workflow | Skill | Add tools, permissions, verification |
| Rule | AGENTS.md / .devin/rules | Trim always-on |
| Hook | .devin/hooks.v1.json | Check events/outcome |
| MCP | .devin/mcp_config.json | Re-authenticate and narrow grants |
| Auto-exec | Permissions + sandbox | Translate the intent, not the syntax |
Why this is a translation and not a copy is clearest at the filtering. Cascade's memories accumulated facts indiscriminately and could absorb secrets; workflows silently assumed the old auto-execution model; broad MCP grants were issued under an old trust boundary. A blind import would drag that whole model across intact. The translation is exactly the moment where you cut what should not move and rethink what should.
The cost of copying instead of translating is concrete. A secret from a memory settles into an always-on rule and rides along in every prompt. A bloated always-on eats context and money for nothing. MCP grants stay wider than the new environment needs. The intent of auto-exec is lost, and the agent either asks where it should not or acts where it should have asked. Each of these errors follows from carrying over the form instead of the meaning.
You should check readiness to turn Cascade off against a short checklist, and every item is a separate "yes". The needed memories are migrated and reviewed. Workflows are replaced by skills and tested, not merely created. MCP and hooks actually work in Devin Local, not just exist. The team knows the new permission model - otherwise deny and ask will keep surprising them. And the legacy agent is first disabled on a pilot project, not on everything at once. While even one item lacks a "yes", it is too early to turn Cascade off.
The typical failures grow from haste with that last step. Cascade is shut off before the skills are tested in practice - and a working process is lost with it. Secrets from memories are imported into rules and scattered across prompts. The always-on is left bloated because "let it stay". People forget to re-authenticate MCP and are surprised the integration is silent. The pilot is skipped and legacy is disabled for the whole team at once. The sign is the same: turning Cascade off was treated as an event rather than as the finale of a verified translation. Do the translation and check it - then turning it off becomes a formality, not a risk.