<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/breaking-changes-lxnu9dwhw" -->

---
title: Breaking Changes | daily.dev
description: Asgard 0.6.0 changes how it names projects on disk, and existing scheduled tasks and watchers from older versions won't migrate automatically. Project slugs...
canonical: https://daily.dev/posts/breaking-changes-lxnu9dwhw
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Breaking Changes | daily.dev
og:description: Asgard 0.6.0 changes how it names projects on disk, and existing scheduled tasks and watchers from older versions won't migrate automatically. Project slugs...
og:url: https://daily.dev/posts/breaking-changes-lxnu9dwhw
og:image: https://api.daily.dev/og/posts/lXNu9DWHw.png
og:image:alt: Breaking Changes
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Breaking Changes

**[Ruby Flow](https://daily.dev/sources/rubyflow)** · 10 min read · 0 upvotes · 0 comments

## Summary

Asgard 0.6.0 changes how it names projects on disk, and existing scheduled tasks and watchers from older versions won't migrate automatically. Project slugs now include a CRC32 hash of the full path, fixing silent conflicts where two directories sharing a basename like 'api' would overwrite each other's scheduled jobs. Upgraders must stop all schedules and watchers under the old version, upgrade, then start them again. The release also removes the exec: keyword, makes every script run under a configurable default_shell (bash by default), and refuses .loki methods that clash with asgard's internal names, such as invoke_command.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://madbomber.github.io/asgard/breaking-changes>

## Questions this post answers

### Why did asgard schedule install sometimes delete another project's scheduled jobs?

Before version 0.6.0, asgard identified projects only by the slugified basename of their directory, such as 'api'. Two different projects sharing that basename, like two checkouts or a repo and its examples folder, collided under the same slug. Running schedule install in one project then pruned entries it saw as removed, which were actually the other project's jobs.

_Anyone tracking task-runner upgrade pitfalls like this can follow release breakdowns on daily.dev._

### How do I fix the ArgumentError unknown keyword exec in a .loki file after upgrading asgard?

Delete the exec: true keyword from sh calls; the task keeps working the same way. Asgard 0.6.0 removed exec: because every script now runs as a file under its shell, so a kill signal to the shell's pid no longer left the command running independently as it could before. Without the keyword, the shell and command share the terminal's process group and exit together.

_daily.dev surfaces migration notes like this for developers chasing down breaking-change errors._

### Why does my .loki shell script fail with shell bash not found error after an asgard upgrade?

Asgard 0.6.0 runs every script, one line or many, under the shell configured with default_shell, which defaults to a seeded ':bash' entry resolved from PATH. On a machine or container with only /bin/sh and no bash installed, this fails with 'shell :bash not found: bash' and exits 127. Fix it by setting default_shell to :sh, or by pointing the :bash entry at /bin/sh with the shell method.

_Developers debugging shell-default errors after a task-runner upgrade can track fixes like this on daily.dev._

## Similar posts on daily.dev

- [Backstage 1.55 Adds Scaffolder Task Recovery and Removes Deprecated Catalog APIs](https://daily.dev/posts/backstage-1-55-adds-scaffolder-task-recovery-and-removes-deprecated-catalog-apis-1rcyvdyrn) · InfoQ · 0 upvotes · 0 comments
- [Projectile 3.4](https://daily.dev/posts/projectile-3-4-xdqraspom) · Meta Redux · 0 upvotes · 0 comments
- [Hex v2.6.0 released](https://daily.dev/posts/hex-v2-6-0-released-x6ee6wzjk) · Elixir Forum · 0 upvotes · 0 comments
- [Forgejo Runner v13.0.0 is available](https://daily.dev/posts/forgejo-runner-v13-0-0-is-available-i0a6tbihu) · Forgejo News · 7 upvotes · 0 comments

---

Tags: [#ruby](https://daily.dev/tags/ruby), [#shell](https://daily.dev/tags/shell)

[View this post on daily.dev](https://daily.dev/posts/breaking-changes-lxnu9dwhw)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Breaking Changes","url":"https://daily.dev/posts/breaking-changes-lxnu9dwhw","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/breaking-changes-lxnu9dwhw"},"datePublished":"2026-11-01T00:15:34.636Z","dateModified":"2026-11-01T00:16:01.268Z","description":"Asgard 0.6.0 changes how it names projects on disk, and existing scheduled tasks and watchers from older versions won't migrate automatically. Project slugs...","image":"https://media.daily.dev/image/upload/s--2-1xRawN--/f_auto/v1722860399/public/Placeholder%2011","thumbnailUrl":"https://media.daily.dev/image/upload/s--2-1xRawN--/f_auto/v1722860399/public/Placeholder%2011","isAccessibleForFree":true,"articleSection":"Ruby Flow","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Ruby Flow","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/a21aaa8bcbbf448193a016895c90a0e1","url":"https://daily.dev/sources/rubyflow"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/breaking-changes-lxnu9dwhw","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"ruby,shell","timeRequired":"PT10M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Ruby Flow","item":"https://daily.dev/sources/rubyflow"},{"@type":"ListItem","position":3,"name":"Breaking Changes"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/breaking-changes-lxnu9dwhw#faq","mainEntity":[{"@type":"Question","name":"Why did asgard schedule install sometimes delete another project's scheduled jobs?","acceptedAnswer":{"@type":"Answer","text":"Before version 0.6.0, asgard identified projects only by the slugified basename of their directory, such as 'api'. Two different projects sharing that basename, like two checkouts or a repo and its examples folder, collided under the same slug. Running schedule install in one project then pruned entries it saw as removed, which were actually the other project's jobs. Anyone tracking task-runner upgrade pitfalls like this can follow release breakdowns on daily.dev."}},{"@type":"Question","name":"How do I fix the ArgumentError unknown keyword exec in a .loki file after upgrading asgard?","acceptedAnswer":{"@type":"Answer","text":"Delete the exec: true keyword from sh calls; the task keeps working the same way. Asgard 0.6.0 removed exec: because every script now runs as a file under its shell, so a kill signal to the shell's pid no longer left the command running independently as it could before. Without the keyword, the shell and command share the terminal's process group and exit together. daily.dev surfaces migration notes like this for developers chasing down breaking-change errors."}},{"@type":"Question","name":"Why does my .loki shell script fail with shell bash not found error after an asgard upgrade?","acceptedAnswer":{"@type":"Answer","text":"Asgard 0.6.0 runs every script, one line or many, under the shell configured with default_shell, which defaults to a seeded ':bash' entry resolved from PATH. On a machine or container with only /bin/sh and no bash installed, this fails with 'shell :bash not found: bash' and exits 127. Fix it by setting default_shell to :sh, or by pointing the :bash entry at /bin/sh with the shell method. Developers debugging shell-default errors after a task-runner upgrade can track fixes like this on daily.dev."}}]}
```

