自動化は動いているのに、説明できる人がいません

先月誰かが作ったSlackレポートボットは、今日も正常にメッセージを送っています。しかし作成者は別のチームへ異動し、Google SheetsとSlackにどの権限で接続しているのか、APIキーがコードに入っているのかを尋ねても、誰も確かな答えを出せません。

AIコーディングツールによって小さな社内アプリやスクリプトはすぐ作れるようになりましたが、所有者・認証情報・権限・実行履歴を説明することまで自動的に解決されるわけではありません。Tinesは、AIで作られたソフトウェアがITやセキュリティの可視性の外でシステムやデータに接続する現象を「ワイルドコード(Wild Code)」と呼んでいます。 ただし、これは公認のセキュリティ分類ではなく、Tinesが提示する製品・市場のフレームです。

ここでの要点は、自動化を止める方法ではありません。コードがシークレットを直接保持して外部システムを呼び出す構造を、コネクター、隔離された実行、非公開ドラフトとライブ権限に分ける方法です。

リスクを大きくするのはAIではなく「境界のない接続」です

まず確認すべきなのは、AIが書いたコードの割合ではなく、そのコードが持つ接続権限です。IBMが2026年1~4月に33地域・19業界のIT・技術・AIの意思決定を担う上級役員2,000人を調査したところ、77%がAI導入の速度は現在のガバナンス能力を上回っていると答え、70%が現場の技術導入速度をITが追跡できていないと答えました。 これは特定企業における未承認自動化の比率ではありませんが、中央で説明しにくいツールが増えるという運用上の問題を示す認識調査です。

認証情報をコードと一緒に扱う習慣は、公開リポジトリにも痕跡を残しています。GitGuardianは2025年、公開GitHubのMCP関連設定ファイルから固有のシークレット24,008件を発見し、そのうち2,117件は検査時点で有効だったと報告しました。 これをすべての社内自動化の露出率として一般化することはできませんが、設定ファイルもソースコードと同じく漏えい経路になり得るという警告としては十分です。

生成されたコード自体もレビュー対象です。Veracodeは100を超えるLLMに、Java・JavaScript・C#・Pythonで構成された単一関数の完成課題80件を実施させ、SASTで検査しました。その結果、モデルと課題の全組み合わせの45%で既知のセキュリティ欠陥が検出されました。 これは実際のアプリケーション全体の45%が脆弱という意味ではありませんが、小さな関数であってもデプロイ前に静的解析と権限レビューを省略すべきではない根拠になります。

Tines 3Bが移すのは認証情報と実行の境界です

Tines 3Bの実用上の違いは、シークレットをワークフローロジックの外へ出すことにあります。APIキーやOAuthトークンなどの認証情報は個々のステップではなくコネクターに保存され、リクエストURLがコネクターに設定されたパターンと一致する場合に外部リクエストへ付与されます。公式説明によると、シークレットはプロキシを通じて実行時に注入されるため、ビルダー、AI、生成コードに直接公開されません。

接続可能なサービスを、Tinesがあらかじめ定めたリストだけに制限する構造ではありません。カスタムAPIキー・OAuth・リモートMCP・データベースコネクターも作成できます。 したがって安全性は製品名よりも、誰がコネクターを作成できるか、URLパターンとトークン権限をどれだけ狭く設定したかに左右されます。

統制ポイント境界が曖昧な自動化3Bで確認する設定
認証情報コード・設定ファイル・チャットに直接入力コネクターに保存し、宛先URLパターンを指定
実行1つのプロセスで複数の処理を連続実行各ステップを別々のサンドボックスとネットワーク環境で実行
変更修正直後にスケジュール・Webhookが動作非公開ドラフトで手動テストしてからライブに反映
追跡作成者の記憶と個人ログに依存3Bが管理するワークフローの監視・監査・バージョン管理

隔離とプロキシは最小権限の代わりにはなりません。 URLパターンを広く設定したり管理者級トークンを入れたりすると、誤った呼び出しの影響も大きくなります。また、公式資料で確認できる監視範囲は3Bが管理するワークフローです。プラットフォーム外ですでに動いている個人スクリプトやアプリまで自動検出すると断定する根拠はありません。

インストール不要・外部送信なしのドラフトから作りましょう

初回実行の成功基準は、Slackメッセージを実際に送ることではありません。サンプルの自動化情報を入れたときに、所有者の欠落、コードに置かれた認証情報、レビュー日の欠落を構造化された結果として見つけ、外部システムには何の変更も起こさないことです。

Explore無料版は現在、無制限のユーザー・スペース・コネクター、ライブワークフロー3件、1回限りの50ドル分のAI利用枠を提供しています。管理型のClaude・OpenAIプロバイダーも初期設定されているため、別途プロバイダーAPIキーを用意せずに開始できます。 価格と提供条件は変更される場合があります。

  1. Tines 3Bの無料開始ページからExploreテナントを作成し、ログインします。 最初のテストでは、実際のAPIキーや本番データを準備しないでください。
  2. Generalスペースまたは個人スペースを開き、「What do you want to do?」入力欄を探します。 新しいリクエストの結果は、非公開のFirst draftに作成されます。
  3. 以下のリクエストを入力します。
    外部APIを呼び出さない手動実行ワークフローを作成してください。最初のステップで次のサンプルJSONを出力してください: {"name":"weekly-report-bot","owner":"","purpose":"Slack週次レポート","systems":["Slack","Google Sheets"],"credential_location":"source_code","last_reviewed":""}. 次のステップではowner、credential_location、last_reviewedを確認し、欠落またはリスクのある項目をJSON配列としてstdoutに出力してください。外部リクエスト、メッセージ送信、ファイル保存、本番データの変更は行わないでください。
    このJSONと判定項目は製品性能を評価する数値ではなく、副作用のない初回実行のための例です。
  4. まだRunを押さず、先に生成されたすべてのステップと接続を展開して確認します。 HTTP・API呼び出し、Slackやメール送信、ファイル保存、本番データ変更のステップがないか確認してください。リクエストと異なるステップが作られた場合は、チャットで削除するよう修正し、フロー全体を再確認します。ドラフトでも手動で実行すれば外部システムを呼び出す可能性があります。
  5. 副作用のないステップだけが残ったら、開始ステップでRunを押します。 Runは選択したステップと接続された後続ステップをまとめて実行します。Solo runは選択した1ステップだけを実行するため、最終確認結果まで見る今回のテストには適しません。
  6. 実行ステータスと最後のステップのstdoutを確認します。 ステータスがSuccessであり、最後のstdoutにownerの欠落、source_codeという認証情報の場所、last_reviewedの欠落を示す構造化結果が出れば成功です。stdoutはそのステップの出力であり、次のステップがあればそのstdinに渡されます。
  7. 結果を確認した後もFirst draftのままにします。 スケジュール・Webリクエスト・メールトリガーはライブ版で自動的に動作するため、今回はPush liveを押しません。

入力欄でモデルを使えない場合は、まずテナント種別と権限を確認してください。 Exploreには管理型プロバイダーが標準で含まれますが、有料テナントでは独自のAIプロバイダー設定が必要になる場合があります。 組織ポリシーのために登録できない、または必要なスペース権限がない場合は、本番データを任意の個人アカウントへ移さず、管理者に承認済みテストスペースを依頼してください。

実際のAPIをつなぐときは、URLと権限を一緒に絞りましょう

外部接続を追加するのは、サンプル確認が終わってからにしてください。コネクター作成権限を持つユーザーがConnectorsでテスト用の最小権限認証情報を登録し、実際に呼び出すホストとパスに合わせてURLパターンを狭く指定します。次に、読み取り専用または副作用のないテストURLとHTTPメソッドを設定して接続を確認します。テストに成功すると、ステータスはActiveと表示されます。

テストURLとメソッドを空欄にすると、接続確認がスキップされてUntestedのままになる場合があります。 Untestedは認証情報が実際に機能することを意味しません。安全なテストエンドポイントがない場合は、本番データで直接確認せず、まず別のテスト環境を用意してください。

ドラフトが期待どおりのデータだけを読み書きしたときに初めて、ライブへの反映を検討します。公式ドキュメントによると、Push liveのプロセスにはステップテストを含む事前チェックがありますが、チェックに失敗してもユーザーは公開を続行できます。 事前チェックは警告装置であり、絶対的なデプロイ阻止線ではありません。

既存の自動化を移す前に、まず4つの欄を埋めましょう。

  • 所有者: 障害と権限変更に対応する人
  • 目的: どの入力を受け取り、どこで使うか
  • 認証情報: 保存場所、権限範囲、更新日
  • 実行境界: 外部送信、データ変更、自動トリガーの有無

1つでも分からなければ、すぐにライブへ移さず、サンプルデータのドラフトで動作をもう一度説明できるようにしてください。「ワイルドコード」を減らす最初の行動は新製品の購入ではなく、すでに動いている自動化を説明可能な状態にすることです。

さらに深く知りたい場合

Making Tines 3B Tinesの製品チームが「ワイルドコード」をどのような問題として定義し、製品構造に反映しているかを確認できます。 tines.com

Credentials | Tines 3B Docs 認証情報をコネクターに保存する方法と、宛先URLパターンが重要な理由を確認できます。 docs.3b.tines.com

Understand how your workflows run フロー全体を実行するRunと1ステップだけを実行するSolo runの違い、ステップごとの隔離構造を確認できます。 docs.3b.tines.com