The most expensive lock-in scenarios rarely happen as a bad technology choice. They start with a question. A founder asks a developer, “Can I have a repository dedicated to my solution?” and waits three weeks for a reply. A freelancer disappears with the AWS root password known only to them. Or it turns out that the developer’s app store account is actually registered to the agency, not the company that paid for the app.
That is vendor lock-in in its most realistic form: you paid for something you cannot fully take with you. And you feel stuck.
Is it possible to avoid it? Mostly, yes. Should you worry about every dependency? Not really. Otherwise, you might end up with an over-engineered system that costs more than the lock-in it was meant to prevent.
We will depend on providers and vendors anyway. You cannot make your solution free of dependencies. It is technically unfeasible and costly today. However, the goal is to stay flexible and keep an exit path open if you have to leave a provider or vendor.
In this article, we explore what vendor lock-in actually is, including cases in AI, when you should worry about it, when you shouldn't, how to prevent vendor lock-in in general, and how not to make things worse if you're already trapped.
Two kinds of vendor lock-in in custom software development
Vendor lock-in is a broad term. We can distinguish two types of lock-in in custom development:
Lock-in to your development partner. The agency or a freelancer builds your product. They end up controlling something you need: the repository, the cloud account, the domain, the deployment process, or simply the knowledge of how your system works. Non-tech founders get hurt this way the most. However, you can prevent it in most cases by reviewing your contract, setting up the right accounts, and keeping documentation.
Lock-in to platforms and providers. Your custom product is built per your business logic; however, it depends on a cloud provider, a payment processor, an authentication service, or an AI model in a way that would be expensive to unwind. Some of these dependencies are unavoidable and perfectly reasonable. Your goal is to distinguish which dependencies you choose, what they cost, and which ones you shouldn't accidentally take on.
We cover the first kind in Part 1 and the second one in Part 2. Note that Part 1 matters most if you are choosing a development partner right now.
Part 1: Lock-in to your development partner
This is the part you control completely. Your choices here depend not on the technologies, but on the engagement you set up with your development partner.
What your development partner should give you
Custom solutions range from simple to complex, and dev teams use different languages, frameworks, libraries, APIs, cloud tools, and integrations to meet modern standards and clients’ best interests.
Having worked on 60+ custom projects, we’ve found that tool choice isn't the only thing that matters. It is also essential to understand how the solution can be transferred or modified to alternative vendors and providers. It's also important to understand the exit path if needed over time, whether due to contract termination, technical progress, or industry changes.
In general, a custom software dev team should provide the following to avoid getting you trapped:
Clear commercial and contractual terms that ensure you can transfer the solution. The clauses must specify what is portable in your solution, how another team can access and modify it, and how general knowledge available in the dev industry can be applied to your solution.
Clear code and IP ownership with specific clauses stating that you own the whole solution and have access to all parts, repositories, and environments. The clauses also must state that you can modify the solution with another vendor and use alternative tools to make modifications or transition, if necessary.
Technical and architectural design that uses well-known best standards and open tools. Beware of obscure languages, proprietary code that only 1-2 people can understand, closed APIs, and proprietary frameworks. These tools and development methods must be widely accessible. Otherwise, the alternative team will need to rebuild your solution from scratch.
Portable data and well-written documentation that clearly states the solution’s design and business logic. The data and documentation should be accessible to the solution owner and other teams. Avoid closed formats, proprietary database extensions, and vague document structures to prevent vendor lock-in.
Accounts registered to your company, not to the vendor. Watch out for this hidden danger, as founders often discover it too late. Access to a repository is not the same as owning. Before development starts, make sure these are created under your company’s name and billing, with your team holding the top-level admin rights, and the vendor invited as a member:
- The cloud account (AWS, Google Cloud, Azure) and its root credentials;
- The domain registrar and DNS;
- The code hosting organization (GitHub, GitLab, Bitbucket);
- Apple App Store and Google Play developer accounts;
- The payment provider account (Stripe or equivalent);
- Transactional email, analytics, error monitoring, and any other paid service the product runs on.
A good partner will not resist, but will ask for this setup. If a vendor insists on hosting everything under their own accounts “for convenience”, treat it as a clear red flag.
All this should be included in the planning of your solution. Product discovery sessions or other planning sprints are the best moment to prevent vendor lock-in.
Read also: What is Project Discovery Phase in Custom Software Development
Early warning signs of vendor lock-in
Certainly, a vendor’s proficiency at all levels matters. And that’s what a vendor should maintain both in using specific programming elements for solutions and in project management, to avoid common software development mistakes.
Vendor lock-in is dangerous because it can limit your ability to switch providers, direction or technologies. The realization often comes late, when it is already costly to pivot.
It’s not that a vendor wants you trapped. It’s the multilayer sophistication of custom software development that may drive you into vendor lock-in. You should know the risks and have safeguards to control the process so it doesn't lead to dependence that builds up quietly.
Here are the signs that you are being directed into lock-in, which often are non-obvious to founders, and how to solve them:
| Problem | Solution |
| Only your vendor can read the code | Ask your vendor for onboarding documentation and code walkthroughs for your team |
| Only your vendor can understand architecture decisions | Ask your vendor for explanations or records that show clear design trade-offs |
| Your vendor does not grant you access to code and infrastructure | Ask your vendor to provide you with access to repositories, environments, CI/CD pipelines, and monitoring systems |
| Critical operational data are known only to external specialists | Ask your vendor to provide you with access to the data that those specialists know or use alternative and standardized methods and tools |
| Scope creep quietly accumulates | Ask your vendor for explanations or documentation for each feature that is added |
| The IP contract clearly establishes your ownership; however, without the possibility of another vendor modifying your solution | Ask your vendor to provide you with ownership of the whole solution, including business logic, authorization modules, and administration tools |
The last point in the table deserves special attention.
Make your IP contract as clear as possible.
General statements about IP ownership and transfer are not enough. You need specific clauses that will include the following:
- Your clear rights to custom code;
- Clear access to source code, repositories, and documentation;
- Guarantee of transfer of source code and documentation;
- Exit terms including commitment to support source code and documentation handover.
Formal IP ownership does not necessarily mean actual control. It means you can own the code. But what is equally important is that you can use, modify, and transfer your code without the vendor’s help or consent.
So, if you can answer the following questions with “yes”, you are in a safe spot:
- Do you have access to repositories and environments?
- Can third-party vendors access and understand your solution’s documentation?
- Are the ownership terms specific and clear enough to avoid double reading?
- Have you avoided shared IP arrangements that could limit your rights to modify and transfer?
A “no” to any of these questions could lead to vendor lock-in.
Project management is also important to avoid vendor lock-in. Make sure that you get the following:
- Documentation that is sufficient for a new team to onboard and understand;
- Definition of Done and code standards at the start;
- Easy access to repositories and environments;
- Regular participation in Sprint Reviews discussing the project progress.
A one-day review of your current setup
Vendor lock-in forms slowly and becomes noticeable when it’s hard to deal with it. There is no guarantee that providers won’t switch. Industries, companies, and providers change, so make your solution ready to switch providers if needed.
Normally, vendors who follow best standards and practices arrange things for your best outcomes. They do not want you to be stuck. But double-checking wouldn’t hurt. So, here is a short roadmap to see whether you're heading toward lock-in or can avoid it:
Actually do the export. Check that you are able to run records, documentation, history, attachments, and relationships between them.
Review the contract considering what the vendor owes you upon exit. Check for the renewal date and conditions, non-renewal notice window, renewal price limits, and what the vendor owes you if you want to exit.
Check for alternatives to your current vendor. When you have options, your current relationships may be clearer. Also, if you have alternative pricing for your current solution, you may decide on the exit earlier or later. But also consider factors beyond a vendor-named price.
Create an estimate with specific numbers. Consider the cost of data migration, new team training, and months necessary for migration. A real number beats vague estimates. You’ll understand what is better: switching or staying.
Confirm your access to the source code and documentation. Review what you actually hold. You should have control of the source code, admin credentials, data, and documentation. You may come across source code escrow, an arrangement where a third party holds a copy of the code and releases it to you if the vendor goes out of business. It makes sense for licensed software you do not own. For custom software you paid to have built, you should not need it: the code should already be in a repository your company owns.

Part 2: Lock-in to platforms and providers
It’s possible and sometimes even unavoidable that you depend on outside platforms. In this part, we discuss how to choose your dependencies and understand what it will cost you to leave.
Where platform dependence is fine, and where it bites
When certain assets are specific enough to get a client stuck with one vendor, they can push a client into vendor lock-in, and the vendor can charge more. This is known as asset specificity. For example, APIs, web services, and other standards used as code elements can drive vendor lock-in. Vendors can also lock you in by creating unusual interfaces that require technical and functional expertise to use. The code that uses tightly integrated components also drives vendor lock-in.
The most common stereotype about vendor lock-in is that it is a switch with two options: you are either locked in, or you aren’t.
In reality, the spectrum has multiple colors, and you do not have to tie yourself to one or another. You can choose the hues just like you choose your level of dependence on the vendor or provider.
For example, Stripe is our top recommendation for integrating a payment flow. That’s a lock-in and dependence. But is it critical? Not yet. Stripe has robust processes and solid documentation that help win customers' trust and provide reliable service. Certainly, there are local leaders, and whenever clients want it, and it is feasible, we include the relevant integrations.
Stripe can transfer your customers’ card data to another PCI DSS Level 1-compliant processor on request. Stripe does not export subscriptions, payment history, or other billing objects. To overcome vendor lock-in with Stripe, you need just one architectural decision. Keep a record of plans and entitlements in your own app. Also, let your app charge the card when using Stripe. Then moving becomes an integration effort.
If you keep your pricing logic, trial rules, and invoicing in Stripe Billing, moving means rebuilding them.
Another example of provider or platform lock-in is authentication. You can use any type of session tokens, like JWTs or server-side sessions. What really creates a limit is where your users’ credentials sit.
For example, password hashes sit in your own database. You hash them with a standard algorithm, such as Argon2 or bcrypt. In this case, you can move them anywhere.
On the other hand, if password hashes are kept in a managed identity service that doesn't allow you to migrate them, that’s a possible migration problem. For example, Amazon Cognito does not allow you to export password hashes. Leaving the provider will mean a gradual migration as users log in. Or you can ask every user to reset their password.
These options do not mean you need to leave managed authentication. Choose consciously, and do it before your user base becomes significant.
Things making the lock-in worse in the custom dev industry
Today, SaaS and AI are widely adopted, which can potentially worsen vendor lock-in.
SaaS providers offer free trials and generous rates to make tool adoption easier. You can end up accumulating dependencies. Individually, they may not seem like a big problem. But collectively, they can trap you in a bunch of tools that are hard to manage.
A costly option can happen with purchases or mergers of providers whose services you use in your solution. For instance, customers faced price increases ranging from 800% to 1,500% when Broadcom acquired VMware. The problem had to be resolved quickly, as customers who depended on VMware faced serious issues running their operations. Those included hospitals, public services, and private businesses.
Certainly, it was an outstanding incident to be mitigated by EU law. But it also showed how dependencies can become costly and hard to manage. One company mobilized all its 400 employees to migrate from VMware’s grip. It was a complete business transformation. Most businesses could not afford such changes.
AI may also increase the risk of vendor lock-in. AI is widely used operationally and functionally, managing multiple processes. Vendor lock-in is harder to spot because AI tools are deeply embedded in systems.
Also, watch for subtle signs of possible lock-in. Your solution uses a PostgreSQL database. That seems safe, as it is today’s standard and open-source. However, certain extensions, such as aws_s3 and aws_lambda, may limit you to AWS. If AWS is your choice, that’s fine, but self-hosting on a VPS could cause a problem.
The vendor lock-in starts to be regulated legally, at least in Europe. For example, the EU Data Act, applicable from 12 September 2025, states that the contracts between customers and cloud service providers should include clauses allowing customers to switch providers. This means relevant contracts must include the specific clauses and periods of notification and termination. Customers can migrate their data and have it erased from providers’ resources.
A word on vendor lock-in with AI systems
AI systems are viciously competitive. The AI providers work on differentiation and much less on standardization to win more customers. Hence, it is easy to get trapped. If your AI tool is built as a closed system, you risk getting stuck, especially given how fast AI is developing today.
Risks of AI vendor lock-in include the following:
- Providers’ offerings may be limited, making your dependent solution less performant and competitive;
- AI solutions are subject to regulatory constraints, and if your provider is not transparent about how their AI system works, you risk not only vendor lock-in but also regulatory consequences;
- Proprietary data formats can make it challenging or impossible to migrate your data if necessary;
- Services being changed or deprecated by a provider can be vital for your AI project;
- AI vendor lock-in can reduce your negotiating power and create the possibility of rising costs.
How should you act with AI in custom software development to avoid vendor lock-in?
Here are several tips:
Contractual and project management considerations
- Consider several providers and their offerings in future;
- Ensure contractual agreements support transparency and the possibility of migration;
- Look for open and standardized data formats, open-source tools with robust support, and vendor-agnostic APIs;
- Support open communication with your provider and pay attention to changes that might signal future disruption or lock-in.
Technical considerations
- Plan your exit strategy as part of the AI system’s design, for example, with clauses stating data portability;
- Perform dependency audits for your provider’s services, especially when they rely on third-party tools, infrastructure, systems, and integrations;
- Choose modular software architecture and package services in Docker containers to manage them the same way on any cloud. Note that Kubernetes is relevant later, and at early stages, it may create a situation where running it requires expertise that can itself become a dependency;
- Use layers for designing AI systems, which is called abstraction, to handle dependencies separately, not as a whole;
- Use open standards, such as Open Neural Network Exchange and Model Context Protocol (MCP), Apache Parquet, OpenTelemetry;
- Aim for portability, not multi-cloud. Keep backups stored outside your primary provider, and design an architecture that allows planned moves to another cloud. As for AI, use an internal layer between your product and the model provider. This way, you get highly affordable multi-provider flexibility;
- Use standardized resources and responsible AI. For example, the Agentic AI Foundation (AAIF) is formed under the Linux Foundation in December 2025 to steward the Model Context Protocol, AGENTS.md, and goose as vendor-neutral open projects. Building on protocols governed that way, rather than on one provider's proprietary tooling, is one of the few straightforward defences against AI lock-in available today.

Build your solution with flexibility and control
If you spot vague or alarming points in your communication with a vendor, it’s best to be ready to pivot early.
Here are several examples of the questions you can ask yourself and situations that lead to vendor lock-in or to flexibility and control.
| Parameters | Potential vendor lock-in | Flexibility, freedom, and control |
| What if you want to leave a vendor in two years? | Explanation or your vendor’s answer about the exit is vague, or the contract misses the handover mention | Read about other clients’ past experiences with the vendor and their exit paths. Read the contract. It should name the handover, vendor’s transition time and rate |
| Does your solution exist independently? | A codebase, database, and configuration file that exist within the vendor’s infrastructure or are known to 1-2 specialists | A codebase in a Git repo, a database you can manage, a configuration file in your own infrastructure |
| What happens when the pricing changes? | The price of integrations or vendor’s support and maintenance grows over time, and it’s impossible to avoid it | You think of your pricing ceiling and exit paths before you commit to a tool, feature, provider, or vendor |
| What resources does your vendor use? | Proprietary communication tools, closed databases, a managed identity service with no credential export, proprietary document formats | HTTP and REST communication protocols, PostgreSQL database, user credentials hashed in your own database with a standard algorithm, open document formats |
If you are already locked-in to one vendor or provider
Common misconceptions about how to pivot when you are in vendor lock-in can keep you stuck. You can’t retrofit your past decisions, but you can adjust your situation now. Here is our piece of advice on how to act if you find yourself in a situation of being held by a vendor or a provider:
Audit what holds you back. This may be code, APIs, integrations, data, models, workflows, AI tools, reports, permissions, and business processes tied to your vendor. This audit will show you what to leave as-is, move, replace, rescue, or build from scratch.
Prioritize the most critical dependencies. Not all dependencies require your immediate action. Focus on the systems that directly impact the work of your solution. Those include essential systems, systems that stagnate modernization, and systems with expiring support, difficult security management, and expensive maintenance.
Create a transition path before making amendments. Determine your target architecture, data transition roadmap, integration needs, compliance requirements, and rollback scenarios. Remember that cloud solutions require exit options because of third-party risks and the need to keep the solution resilient in regulatory and operational terms.
Extend your systems gradually. You don’t always need to replace your solution from scratch. A more balanced approach is to outline what should be modernized. Move your workflows, data, and user experience features to a more flexible basis in phases to extend and update your current systems.
Plan your exit from day one: how we work at Codica
We recommend using pivoting techniques before development even starts. Check the possible exit paths before the situation stagnates. Ideally, your custom software development company should provide you with general and specific information on how they help you avoid vendor lock-in. This should be part of the planning sessions for your solution.
At Codica, we provide you with proper access and ownership to your assets, including the following:
- You own your accounts from the outset. We create a code repository in your company’s own organization and register cloud accounts to your company. You hold the top-level admin rights; our team works inside them as invited members.
- Full ownership of the code and the product. Everything we build for you is yours. We sign an NDA and include IP clauses in the contract.
- A handover clause in the standard contract. If you decide to move to another vendor, the contract already specifies what you receive and how the transition works. You don't have to negotiate your exit when you need it.
- Standard, widely used technology. Ruby on Rails or Node.js on the backend, React and Next.js on the frontend, PostgreSQL, Docker, and infrastructure described as code with Terraform. Any competent team can pick this stack up; none of it is ours.
- Documentation and a structured process from discovery onwards. We write decisions down rather than keep them in one person's head.
- Transparency as the default. Weekly sprints, regular demos, and visibility into what is being built and why.
Our clients can use and modify their solutions, grow out of their MVP versions, and succeed with their businesses. Check out our portfolio and online reviews to see the outcomes of those relationships.
If you have questions or plan a project, our team is eager to help you. Contact us, and let’s build you a solution that scales and grows over time.
