You can tell the agency is the problem about six months before you admit it. Missed sprint reviews become "just this once." Bugs that shipped last month show up again. The team starts blaming your requirements for delays that have nothing to do with your requirements. Most founders wait too long because firing an agency feels drastic, and the fear of a half-built codebase sitting in someone else's hands is real. This article is about what to do when you have already made the decision, and what you need to have in place before you make the call.
What warning signs confirm the agency is the problem?
There is a difference between a difficult project and a failing vendor. Difficult projects have hard problems. Failing vendors have patterns.
The clearest pattern: timelines slip, but the agency never adjusts the estimate. They promise the next sprint will make up for lost time. It does not. A 2022 Standish Group report found that 66% of software projects experience significant scope creep or delay, but agencies that communicate proactively about the cause and the revised plan almost always recover. The ones that quietly slip the deadline and say nothing rarely do.
Watch for these four patterns over any rolling 60-day window. Missed deadlines with no revised plan. Bugs that were supposedly fixed appearing in the next release. Demos that show polished screens but no working back-end logic. Invoices that arrive on time even when deliverables do not.
The back-end logic issue is worth pausing on. An agency can spend weeks building screens that look finished without writing a single line of real functionality. Pixel-perfect designs are fast to produce with modern tools. Connecting those screens to a real database, a real payment processor, and real user accounts is where the actual engineering work lives. If you have been watching demos for two months and have never seen a working login with a real email address, you have a problem.
One objective test: ask for a staging environment you can log into yourself. Not a recorded screen share. Not a Figma prototype. A real URL with a real working app, however incomplete. An agency that cannot or will not provide this after six or more weeks of paid work is not building a product. They are managing your perception of progress.
How does a typical agency termination clause work?
Most agency contracts include a termination for convenience clause. It lets either party end the engagement with written notice, usually 30 days, without requiring the other party to have done anything wrong. Read yours now, before you send any communication, because the clause tells you three things you need to know.
First, how much notice is required. Thirty days is standard. Some contracts require 60. A few require 90 for larger retainers. The notice period determines how long you are still paying them after you decide to leave, and how much time you have to prepare the handover.
Second, what deliverables they owe you at the end. A well-drafted contract lists a code handover, documentation, and a list of all third-party services and credentials used in the build. A poorly drafted one says nothing at all, which means you will need to negotiate these items separately.
Third, whether there is a termination for cause clause and what it requires. Termination for cause (meaning: they breached the contract) typically allows a shorter notice period or no notice at all, and may entitle you to a refund of fees paid for undelivered work. Triggering it usually requires you to document the breach in writing and give the agency a cure period (typically 10–15 days) to fix the problem. If they do not fix it within that window, you can terminate immediately. The bar for "cause" is higher than "they are slow", you need documented deliverables that were promised and not delivered, or work that is demonstrably not fit for purpose.
If your contract has no termination clause at all (this happens with informal agency agreements), you are operating on implied terms. In most jurisdictions, reasonable notice (30 days) is still required and payment is owed only for work actually delivered. Get a lawyer to review before you act if you are in this situation.
| Termination Type | Notice Required | Refund Possible | What You Need to Show |
|---|---|---|---|
| Termination for convenience | 30–60 days (per contract) | No | Nothing, either party can exit |
| Termination for cause | 0–15 days after cure period | Potentially | Documented breach, written cure notice |
| Mutual agreement | Whatever you negotiate | Negotiable | Nothing formal, just written agreement |
What should I secure before I give notice?
This is the step most founders skip, and it is the step that determines whether the next six months are smooth or painful. Do it before you send the termination email, not after.
Start with your repository access. Your codebase should live in a repository that you own. If the agency set up the repository under their own organization account (GitHub, GitLab, or Bitbucket), you do not actually control the code even though you paid for it. Log in and check who owns the repository right now. If it is under their account, request a transfer to your account before you give notice. Most agencies will comply without a fight because it is a routine technical step. After notice has been given, the dynamic changes.
Next, list every third-party service the project uses. This includes hosting, databases, email sending, payment processing, analytics, error tracking, and any APIs. For each one, confirm that the account is registered to your email address or your company's domain, not the agency's. Services registered to the agency's email address are effectively controlled by the agency. If they cancel those accounts or simply stop paying the bills after you part ways, your product goes offline.
A 2021 survey by Clutch found that 34% of founders who switched vendors reported at least one service disruption during the transition. Almost all of them traced it back to access credentials that lived with the agency, not the client.
Get written confirmation of every environment. Ask the agency to provide a list of all live environments (production, staging, development), all hosting accounts, all domain registrars, and all credentials your team does not already have. Ask for this as a structured document, not a Slack message. You need a record.
How do I protect my codebase and credentials during the exit?
Once you have given notice, the agency knows the engagement is ending. Most agencies handle this professionally. A minority do not, and the ones who do not tend to get petty about access. Your job is to make sure pettiness cannot hurt you.
On the day you send the termination notice, do three things in this order. Transfer the repository to your account if it is not already there. Export a full copy of the database to storage you control. And rotate every shared credential: passwords, API keys, and admin logins that the agency team members have used.
Rotating credentials does not mean locking them out immediately if they are mid-sprint. It means generating new credentials that you store, and giving the agency team time-limited access (matching the notice period) to continue working. When the notice period ends, the old credentials expire and they no longer have access.
For the code handover itself, request a written document that covers: a plain-English summary of what was built and what was not, a list of every third-party integration and what it does in the product, a description of anything that is unfinished or known to be broken, and instructions for setting up a local development environment. A developer should be able to read this document and get the project running without calling anyone.
If you are bringing on a replacement team, have them review the code before the handover period ends, while the outgoing agency is still reachable to answer questions. After the notice period, your leverage to get answers drops to zero.
Timespade regularly takes over projects from agencies mid-build. The handovers that go smoothly share one feature: the client controlled the repository and the credentials before they gave notice. The ones that turn into months-long disputes share a different feature: the agency owned the infrastructure and the client had to negotiate for access to their own product.
A full-team replacement at Timespade runs $5,000–$8,000 per month, which includes a project manager, designer, senior engineers, and QA. That is less than most US startups pay a single mid-level developer. The team covers product engineering alongside generative AI, predictive AI, and data infrastructure, so if your replacement build needs AI features or a data pipeline alongside the core product, it is one team and one contract rather than multiple vendors to coordinate.
| Handover Item | Why It Matters | Who Owns It After |
|---|---|---|
| Code repository (transferred to your account) | You control the source of truth for your product | You |
| Database export | You have a copy of all user and business data | You |
| All hosting account credentials | Your app stays online regardless of what the agency does | You |
| Domain registrar access | You can update DNS, add SSL, redirect traffic | You |
| Third-party API keys (rotated) | No one can revoke access to services your product depends on | You |
| Written handover document | A new team can pick up the work without calling the old team | You |
One last thing: do not ghost. Send a written termination notice even if the relationship has broken down. An undocumented exit can be treated as abandonment of the contract in some jurisdictions, which creates liability. A clean written notice, even a brief one, creates a clear record of when the engagement ended and what was agreed.
If you are already at the point where you know you need a replacement team, the fastest path to continuity is a discovery call with the incoming team before you give notice to the outgoing one. That way, the moment the handover document lands, the new team can start. There is no gap, no downtime, and no period where your product sits unmaintained.
