# axum 0.8 Services

`axum/axum-0-8` · Skill · v1.0.0

Rust HTTP services on axum 0.8 that keep body limits, JSON errors, cancellation and shutdown right, plus the 0.7 to 0.8 upgrade.

Current knowledge for axum 0.8.9 on tokio 1.54, hyper 1.12 and tower-http 0.7: the 0.7 to 0.8 changes ({id} paths, native async extractors, OptionalFromRequestParts, moved and removed APIs) and, above all, the behaviours that never fail a build: the 2 MB DefaultBodyLimit that RequestBodyLimitLayer cannot raise, raw Body extractors with no limit, plain-text 400/413/415/422 rejections that bypass the app's error type, layers that skip later routes, Query and repeated keys, handler futures dropped on client disconnect or timeout so cleanup after .await never runs, and graceful shutdown that waits forever. Includes one error type for every failure path that never leaks internals, per-key limits with Drop guards, SIGTERM-aware shutdown with a drain deadline, and in-process tests for all of it. Every behaviour claim was reproduced on axum 0.8.9.

## Verdict

- level: **submitted** — In the catalog, not yet checked for this digest.
- uplift: **untested** — No runs exist for this digest.
- digest: `sha256:929be0945b9a260f7770395c7e296cdc53946f0416402f7f709a4a3726097ce9`

## Uplift runs

None for this digest. Untested is not the same as useless: nobody has measured it yet.

## Security

No checks recorded for this digest.

## Compatibility

| agent | targeted | compiled | evaluated |
| --- | --- | --- | --- |
| Claude Code | yes | no record | no record |
| Codex | yes | no record | no record |
| Cursor | yes | no record | no record |
| GitHub Copilot | yes | no record | no record |
| Gemini CLI | yes | no record | no record |
| OpenCode | yes | no record | no record |

## Permissions

- network: none
- shell: cargo, rg
- filesystem: write
- env: none

## Files

- `SKILL.md` 20621 B sha256:5581b496a54de313f4797bba45b65f61da32dbbcc726c27d48db71676d2c9c01
- `references/errors-and-rejections.md` 6218 B sha256:46d844c8989aa8341018e215821b931a3983bc2c8e4963efea9ef503dde4b010
- `references/limits-timeouts-cancellation.md` 6867 B sha256:a7700fb8363eebfee7f733e0b2752b1752969bcda7f1afb3f7a444a5dc979cae
- `references/migration-0-7-to-0-8.md` 4452 B sha256:e5d2f801c2f37c6cf0b226918347e061c735fd4350792a79b52376e42b46efc5
- `references/sources.md` 5260 B sha256:9dbeadad5cbf0216036ff77eb6edb480838c03eb2bfb5ee42636a6d8cd46eb8f
- `references/testing.md` 4117 B sha256:a1a2d9170f4914981652328becbae0009fd4145ffa34f8fcbaaead8cdf410f9a

## Limitations

- Written and verified against axum 0.8.9, tower-http 0.7.1, tokio 1.54.1 and hyper 1.12.0. The unreleased axum main branch already changes serve's output type and timeouts; check the CHANGELOG when a 0.9 ships.
- Covers HTTP/1.1 and JSON APIs. WebSockets, SSE, gRPC (tonic) and multipart parsing are mentioned only where limits or shutdown affect them.
- Does not cover authentication libraries, OpenAPI generation, database pools or tracing setup beyond logging errors.
- The proof suite runs handlers in-process with tower's oneshot; client disconnects are simulated by dropping the request future, which matches what hyper does but is not a real socket test.
- Rejection message texts are quoted from 0.8.9 and may change in patch releases; the status codes are part of axum's documented behaviour.

## Install

```sh
npx sigil add axum/axum-0-8 --agent claude-code,codex,cursor
```

Source: https://github.com/dgesteves/sigil/tree/5cb851d5b2f2f14446ddf631ef5e91bf9d3263dd/catalog/skills/axum/axum-0-8