阅读量11
源代码共管与托管条款的深度实践
在软件行业的投融资实践中,我们反复看到一个令人不安的现实:绝大多数创业公司的核心代码,实际上只掌握在一两个人手里。CTA(首席技术架构师)离职、联合创始人闹掰、创始人”摆烂”——任何一种情况发生,投资人的钱可能就打了水漂。如何通过法律手段让代码真正成为”公司的代码”而非”个人的代码”,是本文要回答的核心问题。
一、案例引入:一夜之间,公司失去了所有代码
2023年底,一家获得5000万元B轮融资的SaaS公司遭遇了堪称”灾难级”的运营危机。公司CTO(也是联合创始人之一)在与CEO发生激烈分歧后,于某个周五一怒之下删除了自己个人账号下的私有Git仓库,并带走了自己笔记本电脑中的全部本地代码。
更令人震惊的是,事后公司才发现:虽然公司有一个名义上的”公司Git仓库”,但核心架构代码、部署脚本、数据库Schema等关键组件全部托管在该CTO个人的GitHub私有仓库中(其个人邮箱注册),公司没有任何其他员工拥有该仓库的管理员权限。公司花费了超过三个月时间、耗费数百万元进行代码重建,才勉强恢复了产品的基本运行能力。
投资人投入的5000万元,在那一刻几乎全部暴露在”源代码单点失控”的巨大风险之下。这一真实案例(当事人信息已脱敏处理)揭示了一个残酷的事实:在法律意义上你”拥有”公司,并不意味着你真正”控制”了公司的核心资产——源代码。
二、法条解读:合同义务与源代码交付
(一)《民法典》第509条:全面履行原则
《中华人民共和国民法典》第五百零九条
当事人应当按照约定全面履行自己的义务。
当事人应当遵循诚信原则,根据合同的性质、目的和交易习惯履行通知、协助、保密等义务。
如果创始人在股东协议或出资协议中承诺将源代码交付给公司,那么这一交付义务应当被”全面履行”——不仅包括交付代码文件本身,还应当包括交付完整的开发环境配置、技术文档、部署说明等必要附属资料,使公司能够真正独立地使用和维护该代码。
(二)《民法典》第563条:合同解除的法定情形
《中华人民共和国民法典》第五百六十三条
有下列情形之一的,当事人可以解除合同:
(一)因不可抗力致使不能实现合同目的;
(二)在履行期限届满前,当事人一方明确表示或者以自己的行为表明不履行主要债务;
(三)当事人一方迟延履行主要债务,经催告后在合理期限内仍未履行;
(四)当事人一方迟延履行债务或者有其他违约行为致使不能实现合同目的;
(五)法律规定的其他情形。
在源代码共管的语境下,如果技术创始人拒绝或拖延交付源代码,导致公司无法正常运营产品,投资人可依据合同约定主张创始人构成根本违约,进而触发合同解除、股权回购等救济措施。但需要注意的是,即使法律给了你权利,如果没有事先在合同中约定清晰的源代码交付标准和时限,维权过程将是漫长而艰难的。
三、实务要点:源代码控制的四层防御体系
(一)第一层:Git仓库共管机制
核心原则:代码仓库的控制权不能集中在一个人手里。建议从公司设立之初就建立以下共管规则:
| 管理维度 | 具体措施 |
|---|---|
| 仓库归属 | 使用公司域名的Organization账户(如GitHub Organization),而非个人账户创建仓库 |
| 管理员分配 | 至少设置2名管理员,分别由CTO和一名非技术核心人员(如CEO、法务负责人)担任 |
| 权限分级 | Owner(公司持有)> Admin(至少2人)> Maintainer > Developer > Reporter > Guest |
| 双因子认证 | 所有管理员账号强制开启2FA,并绑定公司统一管理的恢复密钥 |
| 操作审计 | 开启仓库操作日志(Audit Log),记录所有删除、权限变更、强制推送等高风险操作 |
| 分支保护 | 主分支(main/master)设置保护规则,禁止直接推送和强制删除,要求至少2人Code Review |
值得特别注意的是,随着国内开源生态的发展,除了GitHub外,Gitee(码云)、Coding.net等国内平台也提供了类似的组织管理功能,在跨境合规和数据安全方面可能更具优势。具体选择应结合公司的业务场景和融资背景综合判断。
(二)第二层:分权限管理——不让任何一个人”无所不能”
权限管理的核心逻辑是:可以让人高效地做事,但不能让人独占地控制。建议在技术团队的日常管理中建立以下分权机制:
- 代码读写分离:所有开发人员仅在开发分支上拥有写入权限,主分支的合并请求必须经过至少一名非直接开发者的审批。
- 部署与开发分离:生产环境的部署密钥和CI/CD Pipeline配置与日常开发权限分离,只有指定的运维或DevOps人员可以接触。
- 密钥分级管理:数据库密码、API密钥、云服务凭证等敏感信息使用公司的密钥管理服务(如Vault、AWS Secrets Manager)统一管理,不以明文形式出现在代码仓库中。
- 第三方服务账号归属公司:所有与代码相关的第三方服务(Docker Hub、npm Registry、PyPI等)必须使用公司邮箱注册,不得使用个人邮箱。
(三)第三层:源代码第三方托管
Source Code Escrow(源代码第三方托管)是一种在国际软件交易中广泛使用的风险缓释机制。其基本运作模式如下:
| 角色 | 职责 | 典型场景 |
|---|---|---|
| 存托方 (Depositor) |
技术创始人/技术出资方,定期将源代码存入托管机构 | 创始人以技术入股,代码是公司核心资产 |
| 受益方 (Beneficiary) |
公司/投资方,在约定条件触发时可获取源代码 | 公司不再能获得技术支持的紧急情况 |
| 托管方 (Escrow Agent) |
独立第三方机构,负责保管、验证和按条件释放源代码 | 律师、公证处或专业Escrow服务商 |
在软件行业的股东协议中,Source Code Escrow的触发条件通常包括:
- 技术创始人死亡、丧失行为能力或被宣告失踪
- 技术创始人被公司合法解聘或因严重违约被除名
- 公司进入破产、清算程序
- 技术创始人连续X个月未履行代码维护义务
- 技术创始人未经公司同意将代码另行授权或许可给第三方
国内实践:由于国内缺乏成熟的商业Escrow服务商,实务中更多采用变通方式——例如由公司指定的律师事务所或公证处作为中间保管方,由双方律师共同拟定Escrow协议,明确存管内容(源代码+技术文档+部署手册)、更新频率、释放条件和释放程序。
(四)第四层:离职代码交接——堵住最大的”人性漏洞”
员工离职是源代码失控最常见也最容易被忽视的场景。建议建立以下制度性安排:
| 离职阶段 | 管控措施 |
|---|---|
| 劳动合同条款 | 明确约定在职期间产生的代码著作权归公司所有;约定离职前必须完成代码交接的义务和程序 |
| 通知期内 | 列出该员工负责的所有代码模块清单;安排交接人进行Code Walkthrough;逐步回收高权限账户 |
| 离职当天 | 立即停用所有代码仓库权限、云服务权限、数据库权限;要求签署《代码交接确认书》 |
| 离职后 | 保留审计日志至少12个月;若发现离职后异常访问或泄露行为,立即启动法律程序 |
四、风险提示:源代码失控的四大法律后果
风险一:公司丧失核心资产控制权
从法律角度看,公司”持有”代码和”控制”代码是两个完全不同的概念。如果不建立有效的共管机制,公司在法律上是代码的所有人,但实质上完全无法独立使用、维护和迭代代码。在融资尽调中,这通常被视为重大的公司治理缺陷,会严重影响估值和投资决策。
风险二:知识产权侵权风险激增
离职员工可能将公司代码带到竞争对手处,或用于自己的新创业项目。如果没有完善的权限审计和离职回收机制,公司很难证明侵权发生的时间和方式,在后续诉讼中处于举证不利的位置。
风险三:触发重大违约导致融资失败
投资协议中常见的交割前置条件就包括”公司已建立完善的源代码管理和备份机制”。如果投资人在交割前发现代码处于”个人控制”状态,轻则要求整改、推迟交割,重则直接终止投资。
风险四:创始人个人承担赔偿责任
如果投资人在股东协议中约定了源代码交付义务和对应的违约责任(如违约金、股权回转、损害赔偿),而创始人未能履行,创始人将面临个人财产的重大风险。特别是在新公司法强化出资义务的背景下,技术出资的交付不仅是合同义务,更可能被认定为法定的出资义务。
五、行动建议:源代码共管的实操清单
给技术创始人:
- 从公司注册第一天起就用公司域名注册代码托管服务:这是成本最低但效果最好的”防护墙”。养成习惯,不要等到融资时再迁移代码。
- 主动提议建立共管机制:不要等投资人提出才被动响应。率先建立规范的代码管路制度,恰恰体现了创始人的专业性和对公司治理的重视。
- 区分个人项目和公司项目:保持清晰的项目边界,个人项目使用个人账号,公司项目使用公司账号,绝不混同。这既保护公司,也保护你自己的个人创作。
- 积极参与Escrow条款谈判:Source Code Escrow本质上是对创始人信用的背书,而非不信任。合理设置触发条件,避免过于宽泛的释放条件给公司运营带来不必要的干扰。
给投资人:
- 将代码共管列为投资交割前置条件:在Term Sheet阶段就明确提出代码仓库的归属、权限分配、备份机制等技术治理要求。
- 在股东协议中写入专门的”源代码条款”:明确约定代码交付清单、交付时限、验收标准、版权归属、共管机制、Escrow安排、违约责任。
- 聘请技术人员参与法律尽调:传统的法律尽调无法充分评估代码管控的技术风险。需要技术人员检查权限设置、审计日志、备份策略等技术细节——投资人对代码”安全”的判断不应建立在技术团队的口头承诺之上。
- 设置源代码控制的”红灯条款”:如果在投后发现源代码共管机制被破坏(如关键人员私自删除仓库、将代码转移至个人账户等),应触发对投资人的特别保护机制,如一票否决权升级、加速回购、强制退出等。
- 投后定期审计代码管控状态:投资交割不是终点。建议每半年由技术人员对公司的代码仓库权限设置、审计日志、备份完整性进行一次例行检查,并将检查结果纳入董事会报告。
结语
在软件行业,代码就是”生产资料”。让代码真正成为公司可以独立掌控的核心资产,不仅是投资人的诉求,也是公司走向规范化治理的必经之路。
好的源代码共管机制,应当让创始人自由创造,让投资人安心托付,让公司稳健运行。它不是枷锁,而是一张安全网——在有风雨的时候兜住所有人。法律条款的严谨,恰恰是对商业信任最好的守护。
免责声明:本文仅代表作者个人观点,不构成任何形式的法律意见或投资建议。具体法律问题请咨询专业律师。
林军律师
资深公司法律师 · 行业法律实务专家
💬 欢迎在评论区留下您的看法和理由
|
关于圳品律师团队 |
|
林军律师 — 今日主笔 中国政法大学民商法在职博士。兼具公司法理论深度与大量实务经验,专注公司法、股权纠纷、企业合规体系建设、数据合规与产品质量纠纷。 |
|
严格律师:律所创始人,数十年法律一线经验,具备法院、监察、司法、企业四维实操经验。 |
|
林冰律师:执业27年,法学与财务双背景,累计办理诉讼及非诉讼事务2000余件。 |
|
|
|
📞 电话:0755-82222148 📱 手机:18938871445(v) 18938871445(v) 📧 邮箱:1160727593@qq.com 🌐 网址:www.zhenpinlaw.com 📍 地址:深圳市罗湖区人民南路深房广场B座40楼4004 |
延伸阅读
如您在股东协议、投资条款审查或股权纠纷中需要专业支持,欢迎联系林军律师(深圳公司法律师)进行一对一咨询。








发表回复