# Replace an outdated encryption method everywhere it is used

An outdated hash or cipher replaced everywhere it is used, with a written plan for the data already saved with it.

Category: Security patching
Source: https://letsship.ai/use-cases/retire-a-deprecated-cryptographic-primitive
Published: 2026-08-25

## Goal

Replace the deprecated primitive at every call site and handle the data already written with the old one.

## Acceptance criteria

- No call site uses the old primitive
- Existing values still verify, through migration or a documented dual-read
- Tests cover the new path and the legacy path
- The pull request records when the legacy path can be removed

## What lands as proof

A search showing no remaining call sites, plus tests proving values written by the old primitive still verify.

## Prompt

Copy this to an agent to open the ticket:

```text
Create a Linear issue in my team and assign it to the SHIP agent.

Title: Replace {primitive} across the codebase

Description: A deprecated cryptographic primitive is still in use. Replace it everywhere and handle the values already written with it.

Acceptance criteria:
- No call site uses the old primitive
- Existing values still verify, through migration or a documented dual-read
- Tests cover the new path and the legacy path
- The pull request records when the legacy path can be removed

Before you create the issue, search this repository for weak hashes and ciphers, replace {primitive} with a real one, and say in the description whether any stored data was written with it.
```

## Questions

### What does the agent actually change?

The ticket is scoped to one outcome: replace the deprecated primitive at every call site and handle the data already written with the old one. Work that serves that outcome is in scope, and anything outside it is left for a separate ticket, so the pull request stays reviewable.

### How do I know the work is done?

The pull request carries the evidence, not only the diff. Here that means tests green, plus a clean search recorded in the description, so a reviewer can confirm the result without reproducing the work locally.

### How much oversight does this need?

The run stops once the plan is written. Somebody reads the approach and approves it before any code exists, which is the cheapest moment to redirect the work.
